【发布时间】:2011-08-11 12:25:19
【问题描述】:
我有课,让它成为 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,当我访问 Details 以获取所有 Lazy详细信息,当然我得到 new MyCollection(),但不是 IPersistentBag(或者 IPersistentCollection)。
那么我该如何手动创建代理集合(我有 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>
谢谢!
【问题讨论】:
-
你不为_details使用字段初始化器吗?如果您将项目添加到新的 Foo,_details 将保持为空。
-
因为我们的业务逻辑 - 我们一直通过 Wcf 线移动对象,从服务器 2 客户端和返回,我们不想关心它们 =)
标签: linq nhibernate collections proxy