我有一个简单的nhibernate linq查询,返回的结果比预期的多:
var result = (from foo in session.Linq<Foo>()
where foo.High.ID == High.ID
select foo).ToArray();
foo如下:
public class Foo : DomainLayerSuperType
{
// ...other members omitted for clarity
protected IList<Bar> associatedBars;
}
我的问题是,在“AssociatedBars”集合中,每个酒吧都有一个重复的foo。因此,如果集合中有20个条,比如一个foo实例,我会得到20个foo实例,每个都有20条。
FOO映射:(FluentHibernate)
//other mappings omitted
HasMany<Bar>(x => x.AssociatedBars)
.Access.CamelCaseField()
.AsBag()
.Table("dbo.Bar")
.KeyColumn("FooID")
.Cascade.AllDeleteOrphan()
.Inverse()
.Fetch.Join(); //eager load
当我执行这个等价的HQL查询时,问题不会出现:
var query = new StringBuilder();
query.AppendFormat("select foo from Foo foo where foo.High.ID = {0}", High.ID);
var result = session.CreateQuery(query.ToString()).List<Foo>().ToArray();
另外,当我更改foo的映射时,如果要对关联栏使用延迟加载,则不会出现问题。
有什么想法吗?此外,NH Linq的最佳论坛在哪里?我在这里找不到这么贴的!