2

我一直在将 Pro Dinner 解决方案作为我正在从事的项目的参考,我认为它非常适合..但我不太了解项目结构..据我所知,您将拥有三个对象将代表一个实体

  • 核心——存储库和服务的 poco 实体和接口
  • 数据 – 数据访问层,包含存储库实现、EF5 Code First 映射和 DbContext
  • WebUI – 所有 ViewModel 和 Mapper 类,用于从实体映射到输入 (ViewModel) 和向后映射、mvc 控制器、视图、图像、脚本和一些引导代码

所以从我所见,假设你有一个 Person 类..你会有..

Core 中的 Person 实体,Data 中的 Person 实体和 WebUI 中的 PersonViewModel ..

它是否正确?我错过了什么吗?

让 Core 只包含一个 Person 实体会更好吗?

如果有人有其他建议,请告诉我:)

谢谢。

4

1 回答 1

4

我已经快速下载了 ProDinner 来查看源代码及其架构。

我没有详细查看所有内容,也没有运行应用程序。

从事物的外观来看,为了回答你的问题,我的理解是你只需要Person在核心内创建一个实体。

您不必Person在数据层内创建实体,您必须DbSet<Person>在您的内部添加一个实体DbContext(它恰好位于数据层内)。

至于您的 ViewModel,重要的是要了解 ViewModel 应该是您的 UI 的表示。

例如,假设您的Person实体有 25 个属性。这是否意味着您的 View 会自动显示(或使用)这 25 个属性?

如果答案是肯定的,那么您可以简单地将您的 View 直接输入到您的Person实体中,或者创建一个 PersonViewModel 并将 Poco 中的 25 个属性复制到该 PersonViewModel 中。反过来,使您的视图强类型化到此 PersonViewModel。

另一方面,如果您的 View 计划仅显示(或使用)25 个属性中的 10 个属性,则创建一个 PersonViewModel 并仅创建这 10 个属性。

正如我之前所说,ViewModel 应该是您的 UI(视图)的表示,因此知道您的 View 将显示/使用 10 个属性,拥有 25 个属性的 PersonViewModel 是没有意义的。

不是每个人或团队都喜欢将视图直接强输入到 Poco,但请记住它会起作用。这个选择取决于您(或您的团队)。

希望这有助于澄清。

于 2014-03-18T12:19:19.047 回答