- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我以前从未使用过 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 Web 窗体开始了我们的项目。 我们的 ASP.NET C# web 应用程序在以下环境中使用 .NET Framework 4 ASP.NET Web Forms.
我在尝试为 Entity Framework Core 添加迁移到 Code First 项目时遇到错误,这里是详细信息... 我创建了一个新的 ASP.Net Core Web 项目(VS 2017
Error 1 Copying file bin\EntityFramework.SqlServer.xml to obj\Debug\Package\PackageTmp\bin\Entit
我有一个WPF应用程序,我使用了MVVM体系结构,数据库sql server compact 4。 首先是Entityframework.sqlserverCompact数据库,我使用了通用存储库模式
例如,将 products.Where(p => p.LastModifiedOn > someDate) 总是以相同的订单返回产品(无论如何订购,只要每次调用相同的代码时都是一致的)?或者我应该添加
好吧,假设我有一个用户表,然后是一个记录所有登录尝试的表(Id(计数器)、userId、时间以及是否成功) 现在在我的实体模型中,我希望它成为 2 个关联的一个,包含所有成功尝试的时间和一个包含所有不
我正在努力处理如何最好地跨多个 Visual Studio 项目分解域模型。我正在使用 EntityFramework 4 和企业类型模式来合理化一个可以重用于各种应用程序的系统。最终我想得到一组可以
是否可以使用 POCO 和 EF 处理以下情况?我想要一个 Vehicles 表,有一些 bool 字段,如 IsFast、IsVan、IsTruck,然后有一个 Vehicles 类,有一个 Fas
当我通过传递比较泛型类型 TId 的谓词调用 DbSet.FirstOrDefault() 时,出现以下异常: unable to create a constant value of type 's
我正在使用 EF5 将一些数据从一个数据库迁移到另一个数据库。我通常会使用 SQL 来做这样的事情,但是我需要其他功能(比如在 MembershipProvider 中创建用户)并且希望在 EF 中完
我创建了一个单独的项目并将我的模型复制到这个项目中。我引用了 using System.ComponentModel.DataAnnotations 我的模型定义如下: public class F
上下文: 我有两个类在 SQL 中有两个对应的表。 系统信息 EF 版本: SQL 版本:2012 类 public class Employee { public Employee(
我有一个定义了主从关系的 Entity Framework 对象。详细信息对象集合有一个导航属性。 在稍后的代码中,我尝试使用 AutoMapper 将其中一个主对象映射到数据传输对象。但是,数据传输
有没有办法让这个通用 Context.SalesEntity.Where(t=>t.id==3).Delete(); 有点像 private void DoWork(Expression> predi
来自 NHibernate 背景 - 我有一些审计列来反射(reflect)谁最后编辑了一条记录,以及该编辑发生的时间。 我已经覆盖了 SaveChanges 以寻找一个公共(public)基类,并使
我是 EntityFramework 6 的新手,一直在 POCO 中遇到问题。 以下是我的代码 Domain.cs public abstract class BaseEntity { [K
我刚在单元测试项目中遇到一个问题,坚持认为它需要 EntityFramework 的引用,我确信它不需要它。其他项目正在引用单元测试项目正在引用/测试的项目/扩展方法,并且在不引用 EntityFra
下面的代码应该做什么?在此代码中添加包含表的目的是什么,它应该对与 PersonId 相关的 JobType 进行级联删除,还是只删除具有指定 PersonId 的 Person ? db.tblPe
我试图了解延迟加载在 Entity Framework 6 中是如何工作的。在我看来,延迟加载只适用于 DbContext,其中“to-be-loaded”属性已经存在访问过。请查看下面的示例 - 测
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Entity Framework Validation EntityFramework有什么好的灵活的验证框
我是一名优秀的程序员,十分优秀!