【问题标题】:实体框架 - asp.net 表单网站中没有代码优先选项
【发布时间】:2014-09-03 20:31:55
【问题描述】:

我想在我的网站中使用实体框架(代码首先来自现有数据库)。此视频(http://msdn.microsoft.com/en-us/data/jj200620.) 显示添加 ADO.NET 实体数据模型后有四个选项:

  1. 来自数据库的 EF 设计器
  2. 空的 EF 设计器模型
  3. 空代码优先模型,并且
  4. 数据库中的代码优先

但是在我的项目中我只看到两个:

  1. 从数据库生成,并且
  2. 空模型。

如果我选择从数据库生成,则自动创建的上下文文件会扩展 ObjectContext 而不是 DBContext。并且所有实体类都被放入唯一的上下文文件中,而不是单独的类文件中。

我的环境是: asp.net 表单网站项目,.net 4.5; Visual Studio 2012 专业版; 来自 NuGet 的实体框架 6.1.1。

这让我困惑了一段时间,我在这里没有找到类似的东西。感谢您的帮助。

【问题讨论】:

    标签: c# asp.net .net entity-framework


    【解决方案1】:

    如果您在链接到的网站上仔细阅读,它确实可以解释为什么您看不到视频中的项目:

    我们将使用 Visual Studio 的实体框架工具来帮助我们生成一些初始代码以映射到数据库。

    逆向工程模板不附带实体框架,您需要安装额外的工具来获取它们。您可以从这里下载它们:

    http://www.microsoft.com/en-us/download/details.aspx?id=40762

    【讨论】:

    • 谢谢迈克尔。这个工具有效。现在我可以看到所有四个选项。不明白为什么教程没有添加下载链接。这对程序员来说会更清晰、更容易。另一个问题:在现有数据库中的数据库中,自动生成了model.context.tt和model.tt。在 model.tt 下,每个视频的每个表都应该有单独的类。但是我只看到一个类以部分类的形式包含所有实体类(每个代表一个 db 表)。如何生成单独的类?
    • 我不确定。自从我第一次使用数据库以来已经有一段时间了。但这一切都取决于您使用的 t4 模板,它们可能在视频发布后发生了变化。听起来它只是将您所有的实体类放入一个文件中,如果令人困惑,这是合法的。既然你不应该直接编辑这些类,那也没关系。
    • 我使用了 EF6.x DbContext 生成器。单独的类看起来更合乎逻辑,如果有很多桌子,一个类就太大了。无论如何,感谢您的宝贵时间!
    • 他们不是一个大类,那是不可能的。听起来它创建了一个包含所有类的大文件,我承认这并不理想,但对于自动生成的代码,工作正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    相关资源
    最近更新 更多