相关疑难解决方法(0)

NHibernate通过session.Load()创建代理,但不通过Linq或Criteria API创建代理

我目前的项目有一个奇怪的问题.延迟加载查询不起作用.当我查询列表时,nhibernate分别获取所有关联.

我提取了它的一小部分并将其放入一个单独的解决方案中.基本上我现在拥有的是一个Account-Table和一个AccountSync-Table.两者都有ID和URL,而ID只是db-guid.

我的课程是:

public class HippoAccount
{
    public virtual Guid Id { get; set; }
    public virtual string Url { get; set; }
    public virtual HippoAccountSync Sync { get; set; }
}

public class HippoAccountSync
{
    public virtual Guid Id { get; set; }

    public virtual string Url { get; set; }
    public virtual HippoAccount Account { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

当我现在通过它的guid加载一个对象时:

var account = session.Load<HippoAccount>(accountId);
Console.WriteLine(NHibernateUtil.IsPropertyInitialized(account, "Sync"))
Run Code Online (Sandbox Code Playgroud)

...它返回false并且帐户本身是代理.

但是当通过条件API加载列表时:

var account = (HippoAccount)session
    .CreateCriteria(typeof (HippoAccount))
    .Add(Restrictions.Eq("Id", accountId)) …
Run Code Online (Sandbox Code Playgroud)

nhibernate lazy-loading criteria

10
推荐指数
1
解决办法
6563
查看次数

标签 统计

criteria ×1

lazy-loading ×1

nhibernate ×1