0

伙计们,

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

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

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

问候,

布雷特

4

2 回答 2

0

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

使用实体框架,您的架构看起来很相似,除了 EF 允许通过网络发送域对象。特别是随着与 EF 很好地集成的新技术(如 OData)的出现。

于 2010-06-02T11:46:25.393 回答
0

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

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

关于 Steven 关于 L2Sql 没有很好地序列化的评论,不幸的是,如果您使用 Linq2Sql 的构建器为您提供的开箱即用的东西,那是真的。不过,部分类中的一些解决方法可以很容易地清除它。

于 2010-06-02T13:25:59.450 回答