Asp.net mvc 实体框架模型或MVC模型的最佳实践是什么?

Asp.net mvc 实体框架模型或MVC模型的最佳实践是什么?,asp.net-mvc,entity-framework,data-layer,Asp.net Mvc,Entity Framework,Data Layer,当首先使用带有代码的实体框架时,调用数据库数据的最佳实践是什么 这是我第一次将实体框架与MVC结合使用,并注意到它会自动在我的数据层中构建模型。我的MVC UI中也有一些基本模型,允许我在视图中操作和显示数据。目前,我使用工作流层获取数据,然后将数据库模型自动映射到UI模型以显示数据 这是最好的做法吗?我应该使用实体框架模型而不是UI模型吗?或者这甚至可以做到干净 如果您能提供任何相关信息,我们将不胜感激。EF创建的POCO将用作您的模型。一般的想法是,EF提供对数据库的访问。您可以使用LINQ

当首先使用带有代码的实体框架时,调用数据库数据的最佳实践是什么

这是我第一次将实体框架与MVC结合使用,并注意到它会自动在我的数据层中构建模型。我的MVC UI中也有一些基本模型,允许我在视图中操作和显示数据。目前,我使用工作流层获取数据,然后将数据库模型自动映射到UI模型以显示数据

这是最好的做法吗?我应该使用实体框架模型而不是UI模型吗?或者这甚至可以做到干净


如果您能提供任何相关信息,我们将不胜感激。

EF创建的POCO将用作您的模型。一般的想法是,EF提供对数据库的访问。您可以使用LINQ和/或扩展方法查询EF,并最终得到一个对象或对象集合,通过将它们绑定到WPF中显示在UI上。当然,如果您使用的是WPF,而不是旧的WinForms,那么这就是问题所在。我可以从经验中告诉你,一旦你熟悉了这些技术,这是一个非常简化的过程。这就是一个非常基本的设置是如何工作的

一种更高级的方法是将诸如模型-视图-模型(MVVM)和可能的存储库模式之类的体系结构添加到混合中,在这一点上,您可以以增加复杂性为代价更好地分离代码和表示


我不知道您使用的是什么风格的MVC,以及如何将其与上述内容混合,但如果您想了解更多关于EF的设想,您应该了解我上面列出的技术。

EF创建的POCO应该用作您的模型。一般的想法是,EF提供对数据库的访问。您可以使用LINQ和/或扩展方法查询EF,并最终得到一个对象或对象集合,通过将它们绑定到WPF中显示在UI上。当然,如果您使用的是WPF,而不是旧的WinForms,那么这就是问题所在。我可以从经验中告诉你,一旦你熟悉了这些技术,这是一个非常简化的过程。这就是一个非常基本的设置是如何工作的

一种更高级的方法是将诸如模型-视图-模型(MVVM)和可能的存储库模式之类的体系结构添加到混合中,在这一点上,您可以以增加复杂性为代价更好地分离代码和表示


我不知道您使用的是什么风格的MVC,也不知道如何将其与上述内容结合起来,但如果您想了解更多关于EF的设想,您应该了解我上面列出的技术。

这真的取决于您。如果您也希望对视图模型重复使用相同的EF实体;着手就我个人而言,我宁愿不这样做。这是因为通常情况下,您会向类添加一组与数据中存储的内容无关的属性;我知道您可以像这样使用
NotMapped
属性:

[NotMapped]
public string MyExtraProperty { get; set; }
但我不想。此外,您最终会将
[Display]
和其他属性添加到属性中,在您知道之前,您已经用特定于数据和特定于用户界面的属性对某些内容进行了修饰,如果您不小心,它可能会变得混乱

对我来说也是如此;我有以下资料:

  • 域实体
  • 视图模型
  • 服务/门面/存储库
  • 控制器调用存储库以获取域实体,并将其转换为视图模型以进行显示


    我发现这是一个更干净的方法,但也许那只是我。。为了代码的一致性和清晰性,最重要的是选择一种方法并坚持使用它,但这两种方法都是可以接受的。。正如他们所说的“无论什么能让你的船漂浮”…

    这真的取决于你自己。如果您也希望对视图模型重复使用相同的EF实体;着手就我个人而言,我宁愿不这样做。这是因为通常情况下,您会向类添加一组与数据中存储的内容无关的属性;我知道您可以像这样使用
    NotMapped
    属性:

    [NotMapped]
    public string MyExtraProperty { get; set; }
    
    但我不想。此外,您最终会将
    [Display]
    和其他属性添加到属性中,在您知道之前,您已经用特定于数据和特定于用户界面的属性对某些内容进行了修饰,如果您不小心,它可能会变得混乱

    对我来说也是如此;我有以下资料:

  • 域实体
  • 视图模型
  • 服务/门面/存储库
  • 控制器调用存储库以获取域实体,并将其转换为视图模型以进行显示


    我发现这是一个更干净的方法,但也许那只是我。。为了代码的一致性和清晰性,最重要的是选择一种方法并坚持使用它,但这两种方法都是可以接受的。。正如他们所说的“随遇而安”…

    MVVM听起来可能是最合适的,因为我已经有了一个存储库模式,在使用Linq To SQL时使用了该模式。我已经修改了我的通用存储库来处理实体,并且需要在UI端进行大量的数据操作。MVVM听起来可能是最合适的,因为我已经有了一个存储库模式,在使用Linq to SQL时使用了该模式。我已经修改了我的通用存储库来处理实体,并且需要在UI端进行大量的数据操作。