C# Fluent NHibernate PersistentSpecification测试失败

C# Fluent NHibernate PersistentSpecification测试失败,c#,nhibernate,fluent-nhibernate,C#,Nhibernate,Fluent Nhibernate,我现在有这些地图 public class CountryMap : ClassMap<Country> { public CountryMap() { Table("tblCountry"); Id(x => x.Id, "intCountryId"); Map(x => x.Name, "strCountryName"); HasMany(x => x.FlagImages)

我现在有这些地图

public class CountryMap : ClassMap<Country>
{
    public CountryMap()
    {
        Table("tblCountry");
        Id(x => x.Id, "intCountryId");
        Map(x => x.Name, "strCountryName");
        HasMany(x => x.FlagImages)
            .Table("tblImage")
            .KeyColumn("intRelId")
            .Where("intObjId=29")
            .Not.Cascade.All();
    }
}

public class ImageMap : ClassMap<Image>
{
    public ImageMap()
    {
        Table("tblImage");
        Id(x => x.Id, "intImgId");
        Map(x => x.ObjId, "intObjId");
        Map(x => x.RelId, "intRelId");
        Map(x => x.ImageName, "strImage");
    }
}
公共类CountryMap:ClassMap
{
公共国家地图()
{
表(“TBL国家”);
Id(x=>x.Id,“intCountryId”);
映射(x=>x.Name,“strCountryName”);
HasMany(x=>x.FlagImages)
.表格(“tblImage”)
.KeyColumn(“intRelId”)
.其中(“intObjId=29”)
.Not.Cascade.All();
}
}
公共类ImageMap:ClassMap
{
公共图像地图()
{
表(“tblImage”);
Id(x=>x.Id,“intImgId”);
Map(x=>x.ObjId,“intObjId”);
Map(x=>x.RelId,“intRelId”);
映射(x=>x.ImageName,“strImage”);
}
}
以及以下持续规范测试:

        PersistenceSpecification<Image>(session)()
            .CheckProperty(r => r.Id, 1)
            .CheckProperty(r => r.ImageName, "ss")
            .CheckProperty(r => r.ObjId, (int)ObjectType.Country)
            .CheckProperty(r => r.RelId, 102)
            .VerifyTheMappings();
PersistenceSpecification(会话)()
.CheckProperty(r=>r.Id,1)
.CheckProperty(r=>r.ImageName,“ss”)
.CheckProperty(r=>r.ObjId,(int)ObjectType.Country)
.CheckProperty(r=>r.RelId,102)
.验证应用程序();
在某种程度上,
图像的测试失败了

失败消息是
Assert.AreEqual失败。预期:。实际:System.Data.SQLite.SQLiteException:约束失败
外键约束失败

我已经查了两天了,还没找到原因。有什么帮助吗?

好的,我知道了

这段代码的问题就在这里

        HasMany(x => x.FlagImages)
        .Table("tblImage")
        .KeyColumn("intRelId")
        .Where("intObjId=29")
        .Not.Cascade.All();
NHibernate使用tblImage自动创建一个外键约束,该约束包含大量的
intRelId
s,而这些intRelId不在表
tblcontry
intCountryId
列中。这就是测试失败的原因,即外键约束失败

解决此问题的方法是在数据库中创建
视图
,然后将
视图
映射到
图像
模型中