我是相当新的nhibernate和流利nhibernate,我有一个关联集合查询问题。在数据库中我有一口井,并有4个相关的AFE。我遇到的问题是AFE的集合没有正确填充。无论我做什么,我都会得到4个AFE,但它们都是同一个对象。有什么显而易见的,我做错了。流利的Nhibernate映射问题
谢谢
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"));
wellHeader.AFEs是否返回相同的4个实体? – mxmissile 2010-03-31 13:47:28
很难确定没有看到你的表结构,类结构和映射。你确定你想把'HasMany'转换为'多对一'吗?我没有看到回到父母的属性来支持这种关系。 – 2010-03-31 15:03:44
是的,wellHeader.AFEs总是返回相同的4.即使我在查询中添加取消注释afe,我应该只返回1 AFE,但它仍然返回4.我想我只是因为示例I找到。如果我离开反向,结果相同。 – SnyderJK 2010-03-31 15:28:19