【问题标题】:How to stop wcf service generating entity framework references如何停止 wcf 服务生成实体框架引用
【发布时间】:2013-06-19 23:39:49
【问题描述】:

我有一个包含实体框架项目的 WCF 服务。

我还有用于公开数据的 DTO 类。实体对象被映射到 DTO 对象。

当我生成服务代理时,我看到了实体对象和 DTO 对象。

如果我有一个名为 Product 的表,我会得到一个 Product 和一个 Product1 引用。

这在过去没有发生过。

我做了什么导致这种情况以及如何阻止我的实体对象被暴露?

更多信息:

当 EF 从数据库生成模型对象时,它会添加一个数据协定属性,如下所示:

[EdmEntityTypeAttribute(NamespaceName="KernMobile_V5Model", Name="JobMaster")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class JobMaster : EntityObject

我假设这意味着它将被服务公开?

【问题讨论】:

  • 产品 DTO 是什么样的?您是否有可能使用在 EF 类中声明的 EF 枚举?任何声明为 EF 类型的 DTO 属性?
  • 似乎是导致它的代理的生成。我有一个旧版本的客户端。当我从中生成代理时,一切都很好 - 没有重复。当我从最新的客户端生成代理时,我得到了重复。什么可能导致这种情况?

标签: wcf entity-framework


【解决方案1】:

服务仅公开服务操作中使用的对象,或指定为要公开的已知类型。

如果您的客户端代理正在为这些实体框架对象生成对象,则您必须以某种方式通过您的服务公开它们。这可以是请求或响应对象,也可以是这些对象的属性。

【讨论】:

  • 这正是正确的答案。我不小心引用了一个实体对象,它用它拉动了几乎整个实体对象图。
猜你喜欢
  • 2011-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-20
  • 2011-06-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多