LINQ To SQL实体对象作为域对象

11 linq dns data-access linq-to-sql

显然,关注点分离是我们代码中的一个理想特征,大多数人采取的第一个明显步骤是将数据访问与表示分开.在我的情况下,LINQ To SQL正在数据访问对象中用于数据访问.

我的问题是,实体对象的使用应该停在哪里?为了澄清,我可以将实体对象传递到域层,但我觉得实体对象不仅仅是一个数据对象 - 就像将DAL的一部分传递到下一层一样.

假设我有一个UserDAL类,它应该在调用方法GetByID()时将实体User对象暴露给域,还是应该纯粹用于存储数据的纯数据对象?(在这种情况下似乎浪费重复)

你们在同样的情况下做了什么?有替代方法吗?

希望这不是太模糊.

非常感谢,

马丁.

Cod*_*rks 5

我从我的DAL(使用LINQ2SQL)返回POCO的IQueryable,因此没有Linq实体对象离开DAL.这些POCO将返回到服务和UI层,并且还用于将数据传递回DAL以进行处理.Linq处理得非常好:

 IQueryable<MyObjects.Product> products = from p in linqDataContext.Products 
                                          select new MyObjects.Product //POCO
                                          {
                                              ProductID = p.ProductID
                                          };
 return products;
Run Code Online (Sandbox Code Playgroud)

  • 你如何处理服务层的更新,因为那层(我猜)使用你的POCO?假设您更新了产品名称,如下所示:MyObjects.Product product = from p in linqDataContext.Products其中p.ID = 1选择new MyObjects.Product // POCO {ProductID = p.ProductID,ProductName = p.ProductName}; product.Name ="新名称"; 现在,你如何更新? (4认同)