通过WCF公开实体

| 我有一个使用ADO.NET实体数据模型访问SQL Server的WCF。 要在具有7列的表格中插入新行,我使用WCF方法。 我认为发送七个参数太多了,因此我可以使用结构或表的实体对象。 你怎么看?您是否建议我通过WCF公开实体对象?或者我需要使用一个结构来避免这样做。     
已邀请:
这取决于应用程序的大小/复杂性。公开实体是可能的,但在传输整个对象图(具有其关系的实体)时,可能会引起一些序列化问题。这些问题通常可以通过标记具有“ 0”和“ 1”属性的实体来解决(如果您使用EFv1,则默认使用;如果在EFv4中,默认实体生成=无T4模板,则默认使用)。 如果要遵循简洁的体系结构和良好的关注点分离,建议使用您描述的第二种方法,但这会使您的应用程序更加复杂(对象,转换等的另一层)。为数据传输而创建的结构或类通常称为DTO(数据传输对象)。 数据传输对象允许您仅传输实体所需的必要数据子集。例如,如果您在实体中具有一些基础结构属性(如CreatedAt,CreatedBy),则您不希望客户端设置这些属性,因为服务是负责设置这些属性的。因此,无需允许客户端传递它们。通过不在DTO中公开这些属性,您将使这一点变得清楚。     
我将实体用作数据合同的经验是,您会不断遇到各种麻烦。维护DTO并不理想,但是可以为您提供非常细粒度的控制,包括无需更改合同即可更改数据库模式的能力,以及控制服务公开的字段的能力。 Automapper确实可以为您提供帮助:http://automapper.codeplex.com/     

要回复问题请先登录注册