Mal*_*olm 7 wcf entity-framework datacontract
使用VS 2008和.NET 3.5 SP1:
我正在使用WCF允许客户端连接到使用Entity Framework读取和写入数据库条目的服务.默认情况下,从数据库自动生成的实体应用了DataContract属性.
不幸的是,暴露的许多字段并不意味着客户端消费(即 - 谁访问哪些数据等的记录),出于安全考虑,我宁愿防止它们暴露.有没有办法避免以这种方式公开Entity Framework类?
注意:这不是如何防止.NET实体中的私有属性通过服务公开为公共?.在该问题中,用户希望有选择地显示某些字段,而我希望该实体根本不作为DataContract公开.
提前致谢.
Joh*_*ers 13
您是否知道您的实体不需要与数据库一对一映射?特别是,您可以省略列,甚至是不相关的整个表.
实体模型旨在成为概念模型.您可以轻松地创建一组实体以暴露给一组客户端(可能是Web服务),另一组映射到同一数据库,这可以用于不同的客户端(可能是Web应用程序).
另一方面,我总是建议不要通过Web服务公开Entity Framework对象.不幸的是,Microsoft通过使用[DataMember]标记它们来公开依赖于实现的属性.我现在尝试使用一个简单的服务从AdventureWorks返回SalesOrderHeader.我的客户端收到了以下EF类型的代理版本:
这些不是您的客户需要了解的事情.
我更喜欢暴露数据传输对象,并将属性从一个复制到另一个.显然,通过反射或代码生成,这比通过手工完成更好.我过去通过代码生成完成了它(T4模板).
我没有尝试的选项是AutoMapper.
| 归档时间: |
|
| 查看次数: |
14348 次 |
| 最近记录: |