我正在设计一个具有多种功能的 WCF 服务:
1. ProductDTO GetProduct ( Guid productId )
2. void SetProduct ( ProductDTO product )
3. List<ProductDTO> GetAllProducts()
4. void SetAllProductValues ( int newValue )
这些是服务将支持的操作。我将有一个业务层 (BL) 和一个数据访问层 (DAL)。
我将使用 LINQ-TO-EF 作为我的 ORM 来连接到 SQL 服务器表。
我的问题是 - DAL 究竟应该包含什么?
我问这个问题是因为我读过两本不同的书,说的是不同的东西:
第一种方法: DAL 仅包含数据访问层所需的类(如果有的话)。它包括为此的特殊实体或功能。LINQ-TO-EF 的 EDMX 和模型文件位于单独的程序集中(由 BL 和服务层引用)。在这种方法中 - BL 包含执行 LINQ 查询的实际函数。例如:“GetProduct”将执行 LINQ 查询以从数据库中提取数据。那么 - 在这种方法中 - DAL 中究竟应该包含什么?是空的吗?
第二种方法: DAL 包含用于在 DB 上执行 CRUD 操作的函数,这意味着 - 任何 LINQ-TO-EF 查询都将在 DAL 中完成。那么——在这种方法中——除了一些验证之外,BL 究竟做了什么?
哪种方法是正确的,这如何回答我对这种方法的担忧?