【问题标题】:Linq2SQL, Entities: Middle Tier or Data Access LayerLinq2SQL,实体:中间层或数据访问层
【发布时间】:2011-02-26 18:12:45
【问题描述】:

伙计们,

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

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

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

问候,

布雷特

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2013-11-27
        • 2011-11-14
        • 2018-11-04
        • 2011-01-31
        • 2011-12-27
        • 2011-07-15
        • 1970-01-01
        • 1970-01-01
        • 2017-06-26
        相关资源
        最近更新 更多