FluentNhibernate - 试图在添加时添加多对一的"文档"

msa*_*ago 1 c# nhibernate fluent-nhibernate hibernate-mapping

我没有得到我的映射代码,总是出现相同的错误:当我启动应用程序创建表时,它显示以下错误

尝试在添加时添加多对一的"文档".

这是我的代码:

   public class DocTypes
        {
            public virtual Int16 Id { get; private set; }
            public virtual IList<Documents> Documents { get; set; }        
        }


   public class Documents
        {
            public virtual Int64 Id { get; private set; }
            public virtual DocTypes DocType { get; set; }
            public virtual IList<Files> Files { get; set; }
            public virtual IList<Fields> Fields { get; set; }               
        }
 public class Fields
    {

        public virtual Int32 Id { get; private set; }
        public virtual Documents Document { get; set; }    
    }
Run Code Online (Sandbox Code Playgroud)

我的映射:

public DocTypeMap()
        {
            Table("TbDocType");
            Id(x => x.Id)
               .Column("Num_Id");            
            HasMany(x => x.Documents)
               .KeyColumn("Num_DocType_Id")
               .Inverse()
               .Cascade.All();
            References(x => x.Cabinet, "Num_Cabinets_Id").Cascade.None();
        }
 public DocumentsMap()
        {
            Table("TbDocuments");
            Id(x => x.Id)
             .Column("Num_Id");

            HasMany(x => x.Files)
             .KeyColumn("Num_Document_Id")
             .Inverse()
             .Cascade.All();
            HasMany(x => x.Fields)
             .KeyColumn("Num_Document_Id")
             .Inverse()
             .KeyNullable()
             .Cascade.All();
            References(x => x.DocType, "Num_DocType_Id").Cascade.None();

        }

   public FieldsMap()
        {
            Table("TbFields");
            Id(x => x.Id)
                .Column("Num_Id");
            References(x => x.Document, "Num_Document_Id")
                .Cascade.None();
            References(x => x.Document, "Num_BarCode_Id")
                .Cascade.None();
        }
Run Code Online (Sandbox Code Playgroud)

错误在哪里?

谢谢.

Sim*_*ead 6

你似乎Document在你的引用中引用了两次FieldsMap.这里:

References(x => x.Document, "Num_Document_Id")
    .Cascade.None();
References(x => x.Document, "Num_BarCode_Id")
    .Cascade.None();
Run Code Online (Sandbox Code Playgroud)