暴露大会以外的实体

时间:2009-12-11 16:34:20

标签: assemblies n-tier-architecture entities

我正在寻找有关将实体传递到程序集边界之外的最佳实践的意见。我正在使用Linq-To-SQL,但同样的问题将适用于Entity Framework,NHibernate等。

我有一个我想在多个项目中重用的程序集。在其中有几个实体,我到目前为止保持内部,但我发现将实体列表返回给调用者是有益的。我应该创建一个新类来封装数据,还是应该公开实体本身。

例如,假设我有一个Address实体。有一个方法GetAddress(...)返回Address实体会更好,还是应该创建另一个具有相同属性的类来公开Address数据?

谢谢!

2 个答案:

答案 0 :(得分:0)

您可能需要考虑使用Repository将实体公开给外部程序集。 Here是关于可以与EF一起使用的通用存储库的一篇很棒的CodeProject文章。

答案 1 :(得分:0)

仅仅揭露实体的一票。在实践中,隐藏DTO背后的实体的原因最终并不真正相关。例如,您最后一次撕掉内部数据访问层的时间是否完全不同会导致您丢失自动生成的实体类?

另外,您可以通过避免在仅暴露DTO时发生的痛苦的映射练习来节省时间。 IMO,拥有一个使用反射或其他东西的自动映射工具,并不算是没有痛苦,因为现在你付出了性能,而不是单调乏味。