我对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"));
答案 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已切换。但是,如果没有看到您的架构,很难说清楚。