【发布时间】:2011-04-18 13:38:47
【问题描述】:
我正在尝试设计将 UI 和数据库放在后端的应用程序。
我将使用 Linq-to-SQL 作为数据库层来更新和插入。
现在我正在尝试找出设计项目时使用的最佳实践,假设我在数据库中有 2 个表(客户、订单)
我应该依赖生成的 Linq-to-SQL 类,还是应该仍然为客户、订单创建类?
我是否应该将生成的 Linq-to-SQL 包装在另一个类中以添加验证?
我希望我的问题很清楚。
【问题讨论】:
我正在尝试设计将 UI 和数据库放在后端的应用程序。
我将使用 Linq-to-SQL 作为数据库层来更新和插入。
现在我正在尝试找出设计项目时使用的最佳实践,假设我在数据库中有 2 个表(客户、订单)
我应该依赖生成的 Linq-to-SQL 类,还是应该仍然为客户、订单创建类?
我是否应该将生成的 Linq-to-SQL 包装在另一个类中以添加验证?
我希望我的问题很清楚。
【问题讨论】:
在我看来,L2S 是一种出色的轻量级数据访问方法。如果您可以控制数据库并且应用程序数据处理逻辑有限,这通常是一个不错的选择。
如果您有一个带有 UI 直接与 DB 通信的两层应用程序,那么您可以依赖 L2S 生成的类。如果您有一个与客户端通信的多层应用程序,例如一个 WCF 服务,您可能需要数据传输对象。
使用 L2S 类的部分方法进行验证。
【讨论】:
我认为您应该使用其他 ORM 来更好地实现 DAL,例如实体框架或 Nhibernate,此 ORM 允许您在没有属性的情况下使用 Model First 方法 以及您应该在其他类中分离的验证逻辑,例如 MyEntityValidator 而且使用Repository pattern这个模式的好方法允许不依赖于数据访问EF或Nhibernate
【讨论】: