民间,
在标准的3层架构中,您将把Linq2SQL dbml文件放在哪里?
对于ado.net实体数据模型,您的答案是否相同?
如果dbml文件位于中间层,那么您是否有数据层?
此致
布雷特
答案 0 :(得分:0)
DBML确实属于中间层。 LINQ to SQL查询数据层(您的SQL Server数据库)。 LINQ to SQL通常位于中间层的底层,您不会通过线路发送LINQ到SQL实体(它们不能很好地序列化)。
使用Entity Framework,您的架构看起来很相似,只不过EF允许域对象通过线路发送。特别是随着新技术(如OData)的出现,它与EF很好地结合在一起。
答案 1 :(得分:0)
DBML应该是数据层的一部分,而不是直接暴露给业务层。相反,最好公开获取和保存实体的方法,并保持与持久性特定的交互保持不变(在这种情况下它是Linq2Sql,但通过抽象它,您可以稍后更改为Linq2Entities,或其他任何其他不破坏您的应用程序)。
如果需要执行多个查询并稍微操作数据来创建实体,或者在保存(处理子表的外键等等)时执行额外的工作,这也是一个很好的模型隐藏在其他层级的详细信息。
关于Steven关于L2Sql没有很好地序列化的评论,不幸的是,如果你使用Linq2Sql的构建器提供的开箱即用的话。但是,部分类中的一些变通方法可以很容易地清除它。