流畅的NHibernate:Eager在映射中加载多个集合

时间:2017-11-01 17:07:00

标签: c# nhibernate orm fluent-nhibernate

鉴于我有以下具有多个集合属性的实体......

public class Parent 
{
    public virtual int Id { get; set;}  
    public virtual ICollection<FirstChild> FirstChildren { get; set; }
    public virtual ICollection<SecondChild> SecondChildren { get; set; }
} 

有没有办法可以同时使用流畅的NHibernate来加载这两个属性?或者只是急切地加载与父母相关的所有内容。

如果我有以下作为我的映射...

public ParentMapping()
{
    Id(p => p.Id).GeneratedBy.Identity();

    HasMany(p => p.FirstChildren)
        .Table("FirstChildren")
        .KeyColumn("Id")
        .Inverse()
        .Cascade.AllDeleteOrphan()
        .Fetch.Join();

    HasMany(p => p.SecondChildren)
        .Table("SecondChildren")
        .KeyColumn("Id")
        .Inverse()
        .Cascade.AllDeleteOrphan()
        .Fetch.Join();
}

上面的映射导致错误:

  

&#39;无法同时取出多​​个行李&#39;。

如果我只在其中一个属性上使用它,那么在映射中使用Fetch.Join()就可以了。

我可以使用ToFuture()查询来急切加载所有内容,但是,我更愿意在映射中执行此操作。

1 个答案:

答案 0 :(得分:0)

您需要使用ISet代替ICollection才能使用该功能。

您可以查看herehere