asp.net-mvc - Entity Framework POCO+推荐模式

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

我们非常喜欢 EntityFramework (CTP5),并将其与 ASP.NET MVC3 一起使用。

我不喜欢的是; 事物混合在一起。

我可以将 DisplayAttributeRequiredAttributeRangeAttributeCompareAttribute 放在同一个类中,这意味着我我将数据库验证、一些业务逻辑UI混合在一起。我什至可以放置 ScriptIgnore 属性将其自定义为 Json DTO 对象。因此,我可以将相同的 POCO 类用于持久性、演示、DTO 和业务对象,并作为我的 domian 模型。

您使用 EF POCO + MVC3 工具集遵循哪些设计模式。你有哪几层? 您向您的类添加了哪些职责(您的 POCO 类也是您的域模型吗)

最佳答案

我使用 View 模型来解决这个问题。验证和 UI 表示属性转到 View 模型。在此模式中, Controller 使用存储库来获取 EF 模型,将此 EF 模型映射到 View 模型(为此我使用 AutoMapper)并将 View 模型传递到 View 。由于 View 模型包含所有 UI 表示属性,因此 View 的行为符合预期。每个 View 必须有自己的 View 模型。这意味着您可以将多个 View 模型关联到同一 EF 模型,但包含不同的属性子集,并根据 View 的特定要求显示格式属性。

该过程也以相反的方式工作: Controller 从 View 接收 View 模型作为参数。它将 View 模型映射回模型,并将 EF 模型传递到存储库。 UI 验证属性在 View 模型上处理,因为不同 View 中可能有不同的验证要求:例如插入/更新 View 。在插入 View 中,您将创建一个新实体,因此不需要 Id 属性。在这种情况下,您的 View 模型上甚至没有 Id 属性。相反,在更新 View 中,需要 Id 属性。

关于asp.net-mvc - Entity Framework POCO+推荐模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5193653/

相关文章:

java - Java 中的多态性与服务

c# - 如何发出 GET 请求并将结果解析到列表

c# - ASP.NET Web API Authentication.GetExternalLoginInfoAsync 总是返回 null

c# - Asp.net MVC 和 AJAX

c# - DbModel.Context.tt 下缺少 DbModel.Context.cs 文件

c# - 带有类型参数的自定义控件

asp.net-mvc - @Html.ActionLink、@Url.Action 在 asp.net core razor View 中不起作用

c# - MVC4 单元测试 NSubstitute 找不到要返回的调用

entity-framework - 循环/遍历所有EF模型中的所有属性以设置列类型

design-patterns - 有谁知道黑板模式的成功实现?