7

我一直在查看许多使用 EntityFramework 的 WCF 示例,其中大多数似乎将某种 POCO 或 DTO 类返回给客户端。

我想知道为什么这是因为默认EntityObject包含[DataContract]attributes 和 implements INotifyPropertyChanged。返回 DTO 或 POCO 类是否比返回更好EntityObject(反之亦然)?是否存在使用一个返回值优于另一个返回值的特定实例?

4

2 回答 2

8

作为最佳实践,您绝对应该让它返回一个明确设计为数据契约且没有持久性逻辑的 DTO/POCO 类。

原因是,如果您传递一个 EntityObject,您假设服务的使用者将引用相同的数据上下文,这违反了 SOA 明确边界的原则。它降低了服务的可重用性。

Microsoft 很可能在 EntityObject 上实现了 DataContract,以支持他们的一些基于 WCF 的数据库访问工具,例如 RIA。INotifyPropertyChanged 用于 WPF 绑定支持,与 WCF 或数据协定无关。

于 2011-01-28T02:01:06.403 回答
0

在您不了解持久性逻辑的某些情况下,返回 POCO 是值得的。我的意思是同一个 POCO 可以插入其他 ORM 或用于其他目的。好的,这是 POCO 优于 ORM 的优势,但它也为您提供了优于 EntityObject 的性能提升,后者确实增加了代理/通知程序运行时间。

返回 POCO - 从 WCF 接收时,您必须手动更新实体的状态。

Returning EntityObject - 您收到保持状态的实体。

于 2011-01-28T05:43:38.057 回答