C# fluent映射SQLite中的奇怪外键约束

C# fluent映射SQLite中的奇怪外键约束,c#,sqlite,fluent-nhibernate,C#,Sqlite,Fluent Nhibernate,我有一个使用FluentNhibernate编写的模型,我正在尝试在内存中的SQLite数据库中创建一些测试数据 var fConfig = Fluently.Configure() .Database(config) .Mappings(m => m.FluentMappings.AddFromAssembly(Assembly.GetAssembly(exam

我有一个使用FluentNhibernate编写的模型,我正在尝试在内存中的SQLite数据库中创建一些测试数据

var fConfig =
                Fluently.Configure()
                        .Database(config)
                        .Mappings(m => m.FluentMappings.AddFromAssembly(Assembly.GetAssembly(exampleClass))
                        .Conventions.Add(AutoImport.Never())
                        .Conventions.Add(new SQLiteGeometryTypeConvention())
                         .Conventions.Add(FluentNHibernate.Conventions.Helpers.DefaultLazy.Never()))
                        .ExposeConfiguration(cfg => configuration = cfg);
我遇到的问题是,其中一个表是在生成的sql中创建的,如下所示:

 create table myTable (
       myID  integer primary key autoincrement,
       ...{skip normal columns} 
       ForeignTable1ID INT,
       ParentID BIGINT,
       constraint FK1A2E045AFEC6908F foreign key (ForeignTable1ID) references ForeignTable1,
       constraint FK1A2E045ABB4EBD1F foreign key (ParentID) references Parent,
       constraint FKE21911CF6853D06E foreign key (myID) references Parent
)
我不想要第三个约束,但不知道是什么导致它! 其效果是,我只能在myTable中创建具有有效外键的记录,但也可以在父表中创建myID值。这是不必要的,我看不出是什么原因造成的

映射文件如下所示:

Table("dbo.PalslagInventering");
            Id(x => x.myId).Column("myID");
            References(x => x.ForeignTable1).Column("ForeignTable1ID");
            References(x => x.Parent).Column("ParentID");

            Map(x => x.{other columns here});

HasMany(x => x.Child).KeyColumn("myID");
            HasOne(x => x.Child2).ForeignKey("MyID");

            HasMany(x => x.Child2).KeyColumn("MyID").ForeignKeyConstraintName("Child2");
            HasMany(x => x.Child3).KeyColumn("MyID").ForeignKeyConstraintName("Child3");
父表(被引用)有一个简单的

public virtual IList<MyTable> myTableRecords { get; private set; }
是什么导致“外键”引用返回到它自己的myId

错误似乎是:

HasMany(x => x.myTableRecords)
                .KeyColumn("myID")
                .Inverse();
其中是ID为“myID”的子表(即“MyTable”),KeyColumn应指向父表(即“MyTable”中的外键)

因此:

似乎已经解决了这个问题。这个错误出现在父类的映射文件中,这意味着我一开始错过了它

HasMany(x => x.myTableRecords)
                .KeyColumn("myID")
                .Inverse();
HasMany(x => x.myTableRecords)
                .KeyColumn("ParentID")
                .Inverse();