【发布时间】:2009-07-13 20:34:35
【问题描述】:
使用 VS 2008 和 .NET 3.5 SP1:
我正在使用 WCF 允许客户端连接到使用实体框架读取和写入数据库条目的服务。默认情况下,从数据库自动生成的实体应用了 DataContract 属性。
不幸的是,许多公开的字段并不是供客户端使用的(即 - 谁正在访问哪些数据的记录等),出于安全原因,我宁愿让它们不被公开。有什么办法可以避免实体框架类以这种方式暴露?
注意:这不是How to prevent private properties in .NET entities from being exposed as public via services? 的副本。在那个问题中,用户希望选择性地显示某些字段,而我希望实体根本不作为 DataContract 公开。
提前致谢。
【问题讨论】:
-
这可能类似于另一个没有完全回答的帖子:'wcf 和 ADO 实体框架',stackoverflow.com/questions/828302/wcf-and-ado-entity-framework
-
我同意您给出的“wcf 和 ADO 实体框架”链接上的答案。或者您可以实现某种存储库模式。
-
@Nath - 我绝对同意“wcf 和 ADO 实体框架”的答案,但不幸的是它不能解决我的问题。答案中的第一点是“自动生成实体框架实体”,它将公开我希望作为 DataContracts 保密的数据。如果存储库模式也受到以这种方式生成的 EF 模型的支持,那么它也会有同样的问题 - 除非我遗漏了什么?
-
使用您可以共享给 wcf 的类,您只会在 wcf 端公开您想要的模型中的项目,当您在存储库中执行 .Save(MyEntity) 时,您可以填充那里有你的审计记录。
标签: wcf entity-framework datacontract