Linq2SQL,实体:中间层或数据访问层

时间:2010-06-02 10:25:35

标签: .net linq-to-sql architecture entities n-tier-architecture

民间,

在标准的3层架构中,您将把Linq2SQL dbml文件放在哪里?

对于ado.net实体数据模型,您的答案是否相同?

如果dbml文件位于中间层,那么您是否有数据层?

此致

布雷特

2 个答案:

答案 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的构建器提供的开箱即用的话。但是,部分类中的一些变通方法可以很容易地清除它。