asp.net-mvc - 使用 EntityFramework 和映射的 ViewModels 的 ASP.NET MVC 最佳实践

标签 asp.net-mvc entity-framework design-patterns asp.net-mvc-viewmodel

我以前从未使用过 MVC 设计模式,最近我开始使用 ASP.NET MVC 处理项目。

我使用 ActiveRecord 作为我的数据层。

我还使用 View 模型(每个 View 都是唯一的)和 AutoMapper 将我的 View 模型映射到 EntityFramework 实体。

在研究 MVC、EntityFramework 和阅读不同文章的几天后,我想到了以下设计:

在我的解决方案中,我有一个包含 View 和 Controller 的 Web 项目(表示层)。

我有一个核心项目,我在其中定义我的 ViewModel 和服务(所有业务逻辑所在的业务层)

我有一个 EntityModels 项目,我所有的 EF 实体都在其中(数据层)

这种设计允许我将数据层与表示层分开,Web 项目对 EntityModels 项目一无所知,反之亦然,所有逻辑都在业务层中。

我从我的 Controller (在验证检查之后)将 viewModel 传递到服务层,在服务层执行映射和所有必要的业务逻辑。

这个设计完全正确吗?

我的意见是,我读过应该在表示层中定义 ViewModel。我看到了一些示例,其中表示层引用了数据层并且映射是在 Controller 中完成的(好的做法?)。在这种情况下, Controller 将域模型传递给业务层。我在这里没有任何经验,但我不喜欢它。

所以,谁能指出我哪里是对的,哪里是错的?

提前致谢。

最佳答案

整体架构看起来不错。在我看来,决定将 View 模型放置在何处取决于一个因素。

您是否计划在未来让其他客户受益于重用这些 View 模型(iPad、Android 等)?

如果是这样,一定要将它们排除在 MVC 程序集之外,并将它们放在自己的程序集中。否则,如果您决定创建第二个客户端,只要您可以移动它们并更改代码,就可以安全地将它们放入 MVC 应用程序中。

郑重声明,我总是将我的 View 模型放在它们自己的程序集中。它不会在前期花费更多时间,但如果情况发生变化,它会在未来带来返回。

关于asp.net-mvc - 使用 EntityFramework 和映射的 ViewModels 的 ASP.NET MVC 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6667681/

相关文章:

asp.net - 创建自定义 nuget 包以在项目之间共享通用布局

c# - Parallel.ForEach 中长时间运行进程的进度条

javascript - 如何将数据从表单传递到我的 Controller ,然后返回到我的客户端 javascript?

c# - Entity Framework 不包括选择语句中的列

c# - Entity Framework 和 Lucene 的 DLL hell

c++ - 事件监听器的最佳设计模式

asp.net - 如何将 Azure 上的多个自定义域映射到同一服务器但不同的 URL?

android - ListView 的索引?

android - Android api 中使用的设计模式

c# - Entity Framework 6 在代码中设置连接字符串