我刚刚开始了一个新项目,需要一个WCF服务来处理分布式环境。我仍在努力寻找实现目标的最佳方式。
我想使用NHibernate,但我已经看到了几种不同的方法来解决序列化问题。这是在3.0中处理的吗?我注意到卡车里面有wcf_context:D
如果没有处理,有人能指出我正确的方向吗?
谢谢大家
答案 0 :(得分:3)
通常,如果您要从服务返回数据,则需要返回特定于服务目的的类,包含与该服务调用相关的内容,DTO(数据传输对象)或DataContract在WCF世界。
对于实体和DTO之间的映射特别有用的一个工具是AutoMapper。无论您使用AutoMapper还是仅使用“左右”编码,这都可以防止延迟加载/延迟执行问题,因为执行映射将导致执行。
为什么从服务中返回实体可能不是一个好主意有很多原因,这里有一些(大多数情况都有不同的意见)
答案 1 :(得分:0)
您无法使用WCF传递延迟加载的对象。
有一些解决方法,但有一个错误将在下一个WCF版本中修复(即将推出,2010年4月)
除此之外,只要您使用rigth DataContract定义对象,它们就会愉快地在一起。
列表序列化中也存在一个问题 - 您需要使用带有特定标志的svcutil生成代理,否则会发生错误(列表变为数组而您无法添加更多项)(除非您使用某种类型) WCF和NHibernate都同意的列表 - 看一下(Nhiberate和WCF列表) -