【问题标题】:Use entity framework models across layers?跨层使用实体框架模型?
【发布时间】:2013-06-30 02:27:04
【问题描述】:

我正在编写一个小型 MVC 应用程序来处理我运行的项目的时间表信息。它将被托管,我正在使用 UI/服务/数据层对其进行设计。我被撕裂的一件事是,我可以在所有层中使用实体框架模型吗?好吧,我想我可以,但我应该吗?

所有层都将托管在同一台机器上(可能实际的 DB 除外..)。但是跨所有层访问 EF 模型意味着所有层,包括 UI,都需要对 DB 层的引用——绕过服务。

这是一个安全的举动吗?

也许我可以只从 EF 中提取模型,并以共享库的形式在各​​层之间共享这些模型?

还是我应该咬紧牙关,实施 DTO 和翻译器?所以:

DATABASE->EF->TranslaterToDTO->BusinessLogic->ServiceLayer->UI(TranslaterTOViewModel)->View

【问题讨论】:

    标签: entity-framework


    【解决方案1】:

    实际上,EF 模型是您的业务模型。

    EF 已经在处理您的 DB 模型和您的业务模型之间的映射(EDMX 的 MSL 部分或您的 EntityMapping 类,如果您使用 CodeFirst)。

    一旦您构建了 MVC 应用程序,您就应该有一个视图模型。当请求到达 Contoller 方法时,返回给视图的模型应该由模型构建器构建。这取决于模型构建器来调用您的业务服务。该服务返回模型构建器将映射到正确视图模型的业务模型。
    看看这个SO answer,我解释了如何使用模型构建器。

    【讨论】:

      猜你喜欢
      • 2011-06-11
      • 1970-01-01
      • 2011-08-27
      • 1970-01-01
      • 2013-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多