如何在 NHibernate 中手动创建详细信息收集代理

发布于 2024-11-29 05:15:09 字数 1143 浏览 0 评论 0原文

我有类,让它成为 Foo:

public class Foo
{ 
  ...

  protected MyCollection<Detail> _details
  public virtual MyCollection<Detail> Details 
  {
     get { return _details ?? new MyCollection<Details>(); }
     set { _details = value; ... } 
  }
  ...
}

public class Detail {...}

当我执行 LINQ 查询时:

var q = session.Query<Foo>().Select(foo => new Foo( property1 = foo.property1, ... );
...
q.ToList();

我在 _details 字段中有 NULL当我访问 详细信息< /em> 获取所有 Lazy 详细信息,当然我得到 new MyCollection(),但不是 IPercientBag(或者 IPercientCollection)。

那么如何手动创建代理集合(我有 session / sessionFactory 引用)?

[已添加] 这是映射(在 Foo 上):

<bag name="Details" lazy="true" collection-type="NHibernateDataService.DetailBag`1[[DataObjects.Detail, DataObjects]], NHibernateDataService" cascade="all-delete-orphan" fetch="select" batch-size="1" access="property" inverse="true">
  <key column="`Master`" />
  <one-to-many class="DataObjects.Detail" />
</bag>

谢谢!

I've got class, let it be Foo:

public class Foo
{ 
  ...

  protected MyCollection<Detail> _details
  public virtual MyCollection<Detail> Details 
  {
     get { return _details ?? new MyCollection<Details>(); }
     set { _details = value; ... } 
  }
  ...
}

public class Detail {...}

When I do LINQ query:

var q = session.Query<Foo>().Select(foo => new Foo( property1 = foo.property1, ... );
...
q.ToList();

I've got NULL in _details field, and when I access to Details to get all Lazy details, of course I get new MyCollection(), but not IPersistentBag (or else, IPersistentCollection).

So How can I manually create proxy collection (I've got session / sessionFactory references)?

[ Added ] here is the mappings (on Foo):

<bag name="Details" lazy="true" collection-type="NHibernateDataService.DetailBag`1[[DataObjects.Detail, DataObjects]], NHibernateDataService" cascade="all-delete-orphan" fetch="select" batch-size="1" access="property" inverse="true">
  <key column="`Master`" />
  <one-to-many class="DataObjects.Detail" />
</bag>

Thank you!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

温馨耳语 2024-12-06 05:15:09

MyCollection 无法映射到 IPercientBag,当然,除非您在 MyCollection 上实现该接口(并且可能显式设置映射类型??)...

更标准的方法是在bag 映射到自定义类型 - IUserCollectionType 的实现,您可以选择创建 MyCollection 派生自的基类。

MyCollection can't be mapped to IPersistentBag, unless, of course, you implement that interface on MyCollection (and probably set the mapping type explicitly??)...

A more standard approach is to set the "collection-type" property on the bag mapping to a custom type - an implementation of IUserCollectionType, which you can choose to make a base class that MyCollection derives from.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文