我有一個簡單的NHibernate的LINQ的查詢比預期返回更多結果:爲什麼NHibernate Linq複製結果?
var result = (from foo in session.Linq<Foo>()
where foo.High.ID == High.ID
select foo).ToArray();
美孚看起來是這樣的:
public class Foo : DomainLayerSuperType
{
// ...other members omitted for clarity
protected IList<Bar> associatedBars;
}
我的問題是我在得到一個複製美孚每一個酒吧' associatedBars的集合。因此,如果Foo實例的集合中有20個酒吧,我會得到20個Foo實例,每個實例都有20個酒吧。
的映射的Foo:(FluentNhibernate)
//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();
此外,當我更改映射爲富,爲AssociatedBars使用延遲加載,問題不會發生。
任何想法?另外,Nh Linq的最佳論壇在哪裏?我找不到這樣張貼的人!