我是LINQ to SQL的新手,并为简单的应用程序进行了以下设置:
1)从我的数据库表(DAL?)生成LINQ to SQL类
2)创建了使用LINQ to SQL datacontext的类(BLL?),以插入,更新,删除,选择
3)在我的表示层中,当插入时,例如一个新的“产品”,我正在创建一个对象“Product”的新实例,它来自我的DAL层(这是LINQ to SQL为我创建的)
我的问题是,在这种情况下,这是否是分层的正确方法。对我来说很奇怪的是我使用的是DAL中定义的对象类型,如果你问我,它不应该在表示层中使用。但是,如果我想在不再创建新对象的情况下使用LINQ to SQL对象,这似乎就是要走的路。
您对此有何建议?我是LINQ的新手,所以我不确定这里最好的方法是什么。
感谢帮忙
答案 0 :(得分:4)
我认为没有一个通用的解决方案,但是,如果你有一个简单的应用程序,你可能不希望不必要地复杂化 如果您能够保持数据上下文在您的表示层打开,那么保留L2SQL实体可以获得一些“生产力”:
但是,对于更重,更纯粹的架构,您可以考虑
修改强> 如果您不想在BLL或表示层中使用VS生成的L2SQL实体,那么您有几个选项。
创建一组新的POCO,然后将L2SQL实体映射到您的repository / dal中。 Automapper可以简化此任务。
您可以通过提供XmlMappingSource直接在Linq2SQL中使用自己的POCO,尽管这样做有点多了。