【问题标题】:Unable to find model and context class files while using Database first approach使用数据库优先方法时无法找到模型和上下文类文件
【发布时间】:2012-02-10 06:33:28
【问题描述】:

我是 stackoverflow 和 .Net MVC 3 的新手。

我正在使用数据库优先方法在 .Net 中构建 MVC 3 Web 应用程序。我创建了 .edmx 文件,Visual Studio 通过该文件自动生成了模型类和上下文类文件。

现在我想在我的应用程序中进行一些验证,但我无法在“模型”文件夹中找到自动生成的模型类。虽然我可以将验证放在我的 .edmx 文件的 Designer.cs 文件中,但我的应用程序“UserDetails”表的公共部分类出现在该文件中。

请澄清一下,我怎样才能找到那些自动生成的模型类文件,或者告诉我我尝试的方法是否是将验证放在我的 .edmx 文件的 Designer.cs 文件中的好习惯?

【问题讨论】:

    标签: .net asp.net-mvc-3 edmx


    【解决方案1】:

    自动生成的模型类文件位于 .designer.cs 文件中。这些是作为部分类生成的,应该通过创建自己的部分类来分离业务逻辑。否则,从模型重新生成类时,自动生成将覆盖您的代码。

    一个建议,如果您正在使用实体框架,则 DbContext 和代码优先 (POCO) 是您应该首先考虑的功能。而且 DbContext 比 ObjectContext 更易于使用,可以满足最常见的开发需求。

    如果您是 EF 新手,请按照使用 DbContext 的 ado.net 团队的演练进行操作。 (EF 4.1 模型和数据库首次演练)。

    http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-model-amp-database-first-walkthrough.aspx

    (MVC中的“Models”文件夹实际上是视图模型,必须根据视图自己创建。)

    【讨论】:

    • 是的,它帮助我生成了模型类,但我遇到了一些错误。它给出了一个错误:“System.Data.Entity.DbSet”不包含“AddObject”的定义,并且没有扩展方法“AddObject”接受“System.Data.Entity”类型的第一个参数.DbSet' 可以找到
    • 无法识别 .AddObject()、.ObjectStateManager() 和 .DeleteObject()
    • DbContext 没有这些方法,这些是 ObjectContext 方法。相反,您可以使用诸如 .Add() ,.Remove() 方法。让我对本系列提出建议,以更好地了解使用 DbContext。 (blogs.msdn.com/b/adonet/archive/2011/01/27/…)
    • 或者,如果你还想使用ObjectContext的特性,你可以使用这种方式。 (mydbcontext as IObjectContextAdapter).ObjectContext;
    【解决方案2】:

    您需要根据您想要呈现视图的方式创建模型,并且验证也在那里(也可以说 ViewModel 部分)。将验证放在 Designer.cs 文件中不是一个好习惯。

    在MVC中使用S#arp Lite Architecture进行分离的最佳实践

    【讨论】:

      猜你喜欢
      • 2016-12-08
      • 1970-01-01
      • 1970-01-01
      • 2023-02-16
      • 2020-02-21
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多