【问题标题】:Recommended n-tier architecture with EF4推荐使用 EF4 的 n 层架构
【发布时间】:2010-11-20 00:48:32
【问题描述】:

这个问题已经被问过无数次了,但我从来没有找到一个令人满意的答案,一个专门针对我的问题的答案。就这样吧:

在我的公司,我们处理大型电子商务网站,我们将我们的应用程序分成多个层,它们是:Presentation、BLL、DAL、Application-specific-framework 和模型 (POCO),以通过层保存和传递数据.

为了访问数据库,我们使用 DAL 层中的数据应用程序块编写代码。数据从 DataReader 映射到 Model 对象,然后依次传递到 BLL 并传递到 Presentation 层。

我想开始在这些大型应用程序中使用 EF4,但我希望它能够在断开连接的模型中工作(我知道它并不是真的为此而设计,但通过一些额外的努力可能会实现)。

那么,在这些层级中安装 EF4 的最佳方式是什么?我的意思是,我应该将 .edmx 文件放在 DAL 层还是模型层?我应该编写自己的模型类并从实体模型类映射到我的模型类之一吗?

提前致谢!

【问题讨论】:

    标签: .net entity-framework-4


    【解决方案1】:

    根据我的经验,当前形式(第 4 版)的 EFx 最适合新建应用程序。

    在一个已建立的应用程序中,我们使用了 EF 为我们生成的模型。它位于数据层中。这要求我们在应用程序的每一层都引用数据层。不理想,但确实有效。

    这取决于您的应用程序的大小和复杂性,但我们使用 EF 进行简单的 CRUD 操作。对于更复杂的查询,我们选择将它们保存在数据库中。

    【讨论】:

    • 假设我正在创建一个新应用程序。我想使用 EF4,但我不希望它的模型被传递到每一层(例如,想象一下我会通过 Web 服务公开一些东西,那么将 EF4 模型传递给被调用者就不会很酷)。将 POCO 模型放在模型层中并让 DAL 在传递 BLL 之前填充这些模型是否正确?在这种情况下,BLL 还将 POCO 对象传递给 DAL,然后 DAL 必须将 POCO 对象中的数据映射回 EF4 模型。这个可以吗?谢谢!
    • 这取决于您的应用程序的大小和寿命。在较小的应用程序中,我只使用 EF 生成的模式。随着应用程序的增长,将这些类移动到业务/实体层会更好。在更大的应用程序中,我将从 POCO 开始并利用 EF。缺点是你失去了一些设计师的支持。您正在寻找的是代码优先:weblogs.asp.net/scottgu/archive/2010/07/16/…。 HTH
    猜你喜欢
    • 2016-01-12
    • 2013-02-03
    • 1970-01-01
    • 2015-09-25
    • 2013-07-03
    • 1970-01-01
    • 2020-04-22
    • 2015-06-01
    • 1970-01-01
    相关资源
    最近更新 更多