繁体   English   中英

NHibernate在WCF服务中的问题

[英]Issues in WCF Service with NHibernate

我正在尝试使用Fluent NHibernate和WCF创建服务层。 如何使用LazyLoad? 例如,我会得到一些对象。 该对象包含一个与LazyLoad映射的集合。 因此,我的服务方法创建一个会话,检索对象并关闭该会话。 那懒惰的收藏呢? 我的服务呼叫者将无法访问数据,因为我没有打开的会话。 怎么治疗呢?

多谢你们!!

如果您与数据库有连接,则只能对NHibernate使用延迟加载。

如果您要坚持使用NHibernate并通过WCF访问数据,则需要切换到紧急加载。

如果您愿意删除WCF,则可以允许您的客户端直接访问数据库。

如果您愿意放弃Nhiberhate,则可以使用WCF数据服务。

会发生延迟加载,但是当您的返回值被序列化为WCF响应时,它将全部发生。 例如,我们有以下类:

[DataContract]
public class Person
{
    [DataMember]
    public virtual string Name { get; set; }

    [DataMember]
    public virtual Address Address { get; set; }
}

[DataContract]
public class Address
{
}

假设Person.Address是惰性的。 您查询一个人,但未加载其地址,而是想将此对象返回给客户端。

输入WCF。 WCF将序列化所有[DataMember] ,并且Address是其中之一。 因此,将调用getter,如果您仍在using (ISession)范围之内,它将执行延迟加载。 如果您不使用using范围,而只是定义一个变量ISession (您可能没有关闭),则惰性查询也会执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM