流畅的Nhibernate映射问题

时间:2010-03-31 13:23:26

标签: nhibernate fluent-nhibernate

我对nhibernate和流畅的nhibernate相当新,我有一个将集合与查询相关联的问题。在数据库中,我有一个井,并有4个相关的AFE。我遇到的问题是AFE的集合没有正确填充。无论我做什么,我都会在集合中获得4个AFE,但它们都是相同的对象。有什么明显的我做错了。

由于

PS。我没有对我正在访问的数据库的更改访问权限,因此我无法更改数据库以使其成为真正的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();
    }

集合

    public AFEMap()
    {
        Table("AFE");
        Id(x => x.PropertyID, "PROPERTY_ID");
        Map(x => x.AFETypeID, "AFE_TYPE_CODE");
        Map(x => x.AFENumber, "AFE_NUMBER");
        Map(x => x.IsDeleted, "DELETED_IND");
    }

查询

        var wellSearchCriteria = _session.CreateCriteria<WellHeader>()
            .CreateAlias("AFEs", "afe")
            .Add(Restrictions.Eq("PropertyNumber", id.ToString()))
            //.Add(Expression.Eq("afe.AFETypeID", "01"))
            //.Add(Expression.Eq("afe.IsDeleted", "N"));

1 个答案:

答案 0 :(得分:0)

我认为你的WellHeader 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已切换。但是,如果没有看到您的架构,很难说清楚。