2009-05-26 41 views
3

我正在调查Nhibernate,jquery和WCF在同一时间内部项目,我想知道为什么我不能有“干净”的数据类。WCF和Fluent NHibernate:我怎样才能保持“清洁”类?

从我读过的内容来看,nhibernate世界中的一个非常好的一点是,我的业务类不会链接到框架。 我不会有

<SaveInTable("Thingie")> _ 
Public Class Thingie 
    <ColumnName("ThingieId")> _ 
    Public Property Id as Integer 
    ' accessors 
End Class 

而是像

Public Class Thingie 
Public Property Id as Integer 
' etc 

然后

Public Class ThingieMapping 
Inherits ClassMap(Of Thingie) 
' etc, omitted for brevity's sake 

什么,我不明白的是,如果我要列出的thingie小号在网页与jQuery,如果我想用jQuery的WCF webservices(它看起来像cur租金的趋势,从我见过的各种教程),我发现自己不得不添加DataContractDataMember属性我的Thingie类。
另一方面,经典的ASMX web服务不会打扰我,让我检索类,而不用担心添加属性。

我有这种感觉,我在这里缺少部分图片;似乎很合乎逻辑的尝试保持类别大多是独立的,但我迄今尚未找到例子。

那么,我是否必须放弃所有希望,坚持经典的网络服务,还是有办法让我的WCF蛋糕也吃掉呢?

+0

事实上,昨天我说了一点,当时我说经典的web服务正在运行。我只是没有用IList和泛型集合实现方法。 碰巧,如果我想使用webservices,我将不得不从序列化中排除这些集合,这又是一种打败干净类的想法。 – samy 2009-05-27 09:59:05

回答

3

我建议你使用DTO发送电报 - 然后你可以装饰具有必要属性的DTO。

这意味着,当然,您必须以某种方式将您的域类映射到DTO,反之亦然。如果映射是微不足道的(+其他一些满足一些约定的情况),那么可以使用AutoMapper

使用DTO有几个好处,最好的是你有明确的问题分离 - 你的NHibernate映射域模型是关于在你的域中建模的东西,而你的DTO是通过电线发送数据的。然后,如果一个变化,另一个不一定需要改变。