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

.net Linq2SQL,实体:中间层或数据访问层,.net,linq-to-sql,architecture,entities,n-tier-architecture,.net,Linq To Sql,Architecture,Entities,N Tier Architecture,各位 在标准的三层体系结构中,您将把Linq2SQL dbml文件放在哪里 对于ado.net实体数据模型,您的答案是否相同 如果dBML文件在中间层,那么你有数据层吗? 问候, 布雷特 ,dBML确实在中间层。LINQ to SQL查询数据层(您的SQL Server数据库)。LINQ到SQL通常位于中间层的底层,您不会通过连接将LINQ发送到SQL实体(它们不能很好地序列化) 使用实体框架,您的体系结构看起来非常相似,只是EF允许通过网络发送域对象。特别是随着与EF集成良好的新技术(如ODa

各位

在标准的三层体系结构中,您将把Linq2SQL dbml文件放在哪里

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

如果dBML文件在中间层,那么你有数据层吗? 问候,


布雷特

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


使用实体框架,您的体系结构看起来非常相似,只是EF允许通过网络发送域对象。特别是随着与EF集成良好的新技术(如OData)的出现,DBML应该是数据层的一部分,而不是直接暴露于业务层。相反,最好公开获取和保存实体的方法,并将与持久性细节的交互隐藏起来(在本例中是Linq2Sql,但通过对其进行抽象,您可以稍后更改为Linq2Entities或其他任何内容,而不会破坏您的应用程序)

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

关于Steven关于L2Sql没有很好地序列化的评论,不幸的是,如果您使用Linq2Sql的构建器提供给您的现成内容,这是事实。不过,分部类中的一些变通方法可以很容易地解决这个问题