Fluent-Nhibernate映射问题

Fluent-Nhibernate映射问题,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我对nhibernate和fluent nhibernate相当陌生,我在将集合与查询关联方面遇到了一个问题。在数据库中,我有一口井和4个相关的AFE。我遇到的问题是,AFE集合没有正确填充。无论我做什么,我在收集中得到4个AFE,但它们都是相同的对象。有没有什么明显的迹象表明我做错了 谢谢 另外,我没有对正在访问的数据库的更改访问权限,因此我无法更改数据库以使其成为真正的FK 母公司 public WellHeaderMap() { Table("Well");

我对nhibernate和fluent nhibernate相当陌生,我在将集合与查询关联方面遇到了一个问题。在数据库中,我有一口井和4个相关的AFE。我遇到的问题是,AFE集合没有正确填充。无论我做什么,我在收集中得到4个AFE,但它们都是相同的对象。有没有什么明显的迹象表明我做错了

谢谢

另外,我没有对正在访问的数据库的更改访问权限,因此我无法更改数据库以使其成为真正的FK

母公司

    public WellHeaderMap()
    {
        Table("Well");
        Id(x => x.PropertyNumber, "WELL_NUMBER");
        Map(x => x.PropertyID, "PROPERTY_ID");
        Map(x => x.Name, "WELL_NAME");

        //AFEs is a IList<AFE>
        HasMany(x => x.AFEs).Inverse().KeyColumn("Property_ID").PropertyRef("PropertyID").Fetch.Join();
    }
质疑


我认为您的井口Id可能有误,目前您有:

Id(x => x.PropertyNumber, "WELL_NUMBER");
Map(x => x.PropertyID, "PROPERTY_ID");
可能应该是:

Id(x => x.PropertyID, "PROPERTY_ID");
Map(x => x.PropertyNumber, "WELL_NUMBER");

已切换PropertyNumber和PropertyId。但是,如果没有看到您的模式,就很难判断。

wellHeader.AFEs是否返回相同的4个实体?如果没有看到您的表结构、类结构和映射,就很难确定。您确定要将HasMany转换为多对一吗?我没有看到属性引用回父级以支持此关系。是的,wellHeader.AFEs始终返回相同的4。即使我在查询中添加了取消注释afe,我应该只返回1个afe,但它仍然返回4个。我想我是因为我找到了一个样本才把这个倒数加上去的。如果我不使用反转,结果也是一样。你可以检查这4个是否是同一个引用,然后使用列表中的.Distinct删除它们。从技术上讲,它不是表本身的主键,我只是随意设置Id以帮助映射到我自己的一些表。如果PropertyID不是PK,是否可能在中有多个井具有相同的属性ID?属性ID上有一个唯一的约束,我做了一个查询以确保没有重复的属性ID。是的,它也是唯一的。我知道,我知道,如果我创建了数据库,我会做得不同。这就是供应商应用程序的乐趣所在:你能试着像我的回答中所示那样交换这两个应用程序吗?这只是一个快速测试?
Id(x => x.PropertyNumber, "WELL_NUMBER");
Map(x => x.PropertyID, "PROPERTY_ID");
Id(x => x.PropertyID, "PROPERTY_ID");
Map(x => x.PropertyNumber, "WELL_NUMBER");