gpt4 book ai didi

entity-framework - MVC3 应用程序/服务层/存储库层/POCO 类/EF4 - 问题!

转载 作者:行者123 更新时间:2023-12-02 09:44:03 25 4
gpt4 key购买 nike

我对整个设计概念很陌生,在过去几周的阅读中,我收集了很多信息,但似乎分散和矛盾。术语好坏参半,我只是很难理解这一点。

我使用的模式是这样的,假设流程如下:

MVC 应用
Controller 处理来自客户端对给定 View 的请求/响应。在 Controller 操作方法中,它们联系服务(服务层)并请求对象来构建 View 模型,然后将 View 模型中的对象发送回来。

查看模型
我在 View 之间使用强类型 View 模型。

View 模型是 DTO 吗?它们应该只包含简单的属性,如 Name、AddressLine1、Address City 等,还是应该包含复杂的属性、多个对象等。

是 View 模型中的验证。如果是这样,它会是像必填字段、字段长度等这样的验证。然后像用户名这样的验证已经存在,或者您需要在服务层中与其他对象交互的地方?

View 模型可以只包含从 EF 返回的 POCO 类,还是应该使用 AutoMapper?

如果使用 AutoMapper 和 DTO,DTO 是 POCO 类的克隆吗?

你会映射到 Controller 、 View 模型还是下面的服务层?

服务
对我来说,服务是联系存储库以从 EF 取回 POCO 对象的对象。这是我所有的业务逻辑所在。一旦服务将对象交回存储库以持久保存到 EF,它们就被视为有效对象。它是否正确?

存储库
它们中没有业务逻辑,它们仅用于在服务和 EF 之间传输对象。它是否正确?我在这里用通用存储库实现接口(interface)。那么您可以扩展通用存储库以满足特殊需求吗?

关于术语的问题
1) 业务对象是否等于领域对象?域对象应该包含多少逻辑?

2)领域模型是EF模型吗?我正在使用模型优先的方法。

3)依赖注入(inject) - 我应该使用这个吗?我了解它是如何工作的,只是没有得到真正的好处。我在玩 Ninject。

我认为社区会从某种 wiki 中受益,该 wiki 包含所有带有代码示例的最佳实践。那里有类似的东西吗?那里的许多示例都非常简单,并且许多 Microsoft 示例即使声称使用这种模式也不使用此模式。

在此先感谢所有拥有并将帮助我的人。

顺便说一句 - 我认为 StackOverflow 需要一个“接受答案”复选框旁边的“给我买啤酒”按钮 :)

最佳答案

Are view models DTO's?



可以被认为是 Controller 和 View 之间的一种数据传输对象。

Should they contain just simple properties like Name, AddressLine1, Address City, etc, or should they contain complex properties, multiple objects, etc.



理想的简单属性,但也可以聚合其他 View 模型,但那里没有模型(例如:像 EF 模型)。

Is the validation in the view model.



有两种类型的验证逻辑:进入服务层的业务验证(例如用户名已经存在)和进入 View 模型的 UI 验证(例如:需要用户名)。

Can the view models just contain the POCO classes returned from EF, or should I be using the AutoMapper?



View 模型中没有 EF。 View 模型是具有简单属性和指向其他 View 模型的其他复杂属性的 POCO 类。它们还可以包含方法,以便正确格式化将在这些模型所针对的特定 View 上呈现的数据。

If using AutoMapper and DTO, are DTO's clones of the POCO classes?



不确定我是否理解这个问题。

Would you map in the controller, view model, or in the service layer below?



Controller 。

To me, the service(s) are objects that contact the repository(s) to get POCO objects back from the EF. This is where all of my business logic is. Once the service hands an object back to a repository to be persisted to the EF, they are considered valid objects. Is this correct?



是的。

Is the domain model the EF model?



如果您使用的是 EF 代码优先方法,那么是,否则不是(如果 EF 使用 EF 特定属性和类污染域)。

There is no business logic in them, they are just used to transport objects between the service(s) and the EF. Is this correct?



是的。

I am implementing Interfaces here with generic repository. Then you could extend the generic repository for special needs?



是的,但不要太花哨。通常存储库用于 CRUD 操作。它是应该包含业务逻辑的服务。

Is a business object equal to a domain object?



是的。

How much logic should a domain object contain?



这将取决于您正在处理的特定项目的域逻辑数量,以及您可以从您或其他人从事的旧项目中重用的任何现有域逻辑。

Dependency Injection - Should I be using this?



是的,一点没错。

I understand how it works, just don't get the real benefit



它在应用程序的不同层之间提供了较弱的耦合,从而使它们更容易在其他项目中进行单元测试和重用。

I think the community would benefit from some sort of wiki that contained all the best practices with code samples.



我同意。

Is there something like that out there?



我对此表示怀疑。

BTW - I think StackOverflow needs a little, "Buy Me A Beer" button next to the "Accept Answer" checkbox



不能再同意了。

关于entity-framework - MVC3 应用程序/服务层/存储库层/POCO 类/EF4 - 问题!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5136689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com