0

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

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

这是一个安全的举动吗?

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

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

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

4

1 回答 1

0

实际上,EF 模型就是你的商业模型。

EF 已经在处理您的 DB 模型和您的业务模型之间的映射(如果您进入 CodeFirst,则为MSLEDMX 或您的类的一部分)。EntityMapping

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

于 2013-07-01T10:21:01.047 回答