我正在寻找有关将实体传递到程序集边界之外的最佳实践的意见。我正在使用 Linq-To-SQL,但同样的问题也适用于实体框架、NHibernate 等。
我有一个想在多个项目中重用的程序集。其中有几个实体到目前为止我一直保留在内部,但是我发现将实体列表返回给调用者是有益的。我应该创建一个新类来封装数据还是应该只公开实体本身。
例如,假设我有一个地址实体。拥有一个返回地址实体的方法 GetAddress(...) 会更好,还是应该创建另一个具有相同属性的类来公开地址数据?
谢谢!
我正在寻找有关将实体传递到程序集边界之外的最佳实践的意见。我正在使用 Linq-To-SQL,但同样的问题也适用于实体框架、NHibernate 等。
我有一个想在多个项目中重用的程序集。其中有几个实体到目前为止我一直保留在内部,但是我发现将实体列表返回给调用者是有益的。我应该创建一个新类来封装数据还是应该只公开实体本身。
例如,假设我有一个地址实体。拥有一个返回地址实体的方法 GetAddress(...) 会更好,还是应该创建另一个具有相同属性的类来公开地址数据?
谢谢!
您可能需要考虑使用存储库将实体公开给外部程序集。 这是一篇很棒的 CodeProject 文章,介绍了可与 EF 一起使用的通用存储库。
一票仅公开实体。在实践中,将实体隐藏在 DTO 后面的原因最终并不相关。例如,您最后一次为完全不同的东西剥离内部数据访问层是什么时候,这会导致您丢失自动生成的实体类?
另外,您可以通过避免仅公开 DTO 时进行的痛苦映射练习来节省时间。IMO,拥有一个使用反射或其他东西的自动映射工具并不算是没有痛苦,因为现在你付出的代价是你在乏味中付出的代价。