Nhibernate fetch是如何工作的

Nhibernate fetch是如何工作的,nhibernate,conform,Nhibernate,Conform,可能重复: 我读过这篇文章。 我试图在我的项目中复制它,但结果很奇怪 我有两个实体: Plan { public virtual int Id { get; set; } public virtual Payer Payer { get; set; } } Payer { public virtual int Id { get; set; } public virtual string Name { get; set; } } it的映

可能重复:

我读过这篇文章。

我试图在我的项目中复制它,但结果很奇怪

我有两个实体:

Plan 
{ 
    public virtual int Id { get; set; } 
    public virtual Payer Payer { get; set; } 
} 

Payer 
{ 
    public virtual int Id { get; set; } 
    public virtual string Name { get; set; } 
} 
it的映射:

 orm.Cascade<Payer, Plan >(CascadeOn.Persist | CascadeOn.Merge); 
 orm.Cascade<Plan, Payer>(CascadeOn.None); 
为什么我有两个问题?如何使用join获取一个查询?

试试看

var plan=session.Query() .其中(c=>c.Id==1) .Fetch(x=>x.Player)。渴望 .SingleOrDefault()

尝试禁用延迟加载,这样默认情况下它将立即加载

var plan=session.Query() .其中(c=>c.Id==1) .Fetch(x=>x.Player)。渴望 .SingleOrDefault()


尝试禁用延迟加载,这样在默认情况下它将自动加载。我怎样才能把这个问题设为重复的?这是答案。如何将此问题设置为重复?此代码运行良好。但是我想在映射中设置它。这段代码很好用。但我想在地图上设置它。
mapper.Customize<CarePlan>(cm => cm.ManyToOne(o => o.Payer, x => 
x.Fetch(FetchKind.Join))); 
    var plan = session.Query<Plan>().Where(c=>c.Id == 
    1).SingleOrDefault(); 

 Console.WriteLine(plan.Payer.Name); 
select careplan0_.Id 
       careplan0_.PayerId 
from   CarePlans careplan0_ 
where  careplan0_.Id = 1 /* @p0 */ 
and other query 
SELECT payer0_.Id , 
payer0_.Name    as Name 
FROM   Payers payer0_ 
WHERE  payer0_.Id = 2