2010-06-02 25 views
0

伙计们,LINQ2SQL,实体:中间层或数据访问层

在一个标准的三层架构,哪里会你把你的LINQ2SQL DBML文件?

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

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

问候,

布雷特

回答

0

的DBML确实是在中间层。 LINQ to SQL查询数据层(您的SQL Server数据库)。 LINQ to SQL通常位于中间层的底层,并且不会通过线路将LINQ发送到SQL实体(它们不会很好地序列化)。

使用实体框架您的体系结构看起来非常相似,只是EF允许域对象通过线路发送。特别是随着新技术(如OData)出现,与EF完美结合。

0

DBML应该是数据层的一部分,而不是直接暴露给业务层。相反,最好公开获取和保存实体的方法,并保持与隐藏的持久性细节的交互(在本例中,它是Linq2Sql,但是通过抽象它,您可以稍后更改为Linq2Entities或其他任何内容,而不会破坏您的应用程序)。

这也是一个很好的模型,如果它需要执行多个查询并操纵数据来创建实体,或者在保存时处理额外的工作(处理子表的外键等),因为它保留那些隐藏在其他层的细节。

关于Steven关于L2Sql没有很好序列化的评论,很遗憾,如果您使用Linq2Sql的构建器开箱即用的话,这种说法是正确的。尽管如此,部分类中的几个解决方法很容易清除。