【问题标题】:How to refresh my database如何刷新我的数据库
【发布时间】:2011-08-23 17:12:50
【问题描述】:

我正在创建一个 mvc 应用程序,并且我有一个带有 dbcontext 函数的模型类,变量在同一个文件中。我添加了另一个字段并更改了编辑创建删除详细信息和索引视图中的代码,但我现在收到一条错误消息

“支持 'GameDBContext' 上下文的模型自数据库创建以来已更改。手动删除/更新数据库,或使用 IDatabaseInitializer 实例调用 Database.SetInitializer。例如,DropCreateDatabaseIfModelChanges 策略将自动删除并重新创建数据库,并可选择用新数据为其播种。”

    Imports System.Data.Entity

    Public Class Game
        Public Property ID() As Integer
        Public Property Name() As String
        Public Property Genre() As String
        Public Property Price() As Decimal
        Public Property Developer() As String
    End Class
    Public Class GameDBContext
        Inherits DbContext
        Public Property Games() As DbSet(Of Game)
    End Class

【问题讨论】:

    标签: asp.net-mvc vb.net


    【解决方案1】:

    您需要在Global.asax 文件中的Application_Start 方法中添加一个初始化方法。例如:-

     Database.SetInitializer(new DropCreateDatabaseIfModelChanges<GameDBContext>());
    

    【讨论】:

    • 我补充说,在转换为 vb 并得到错误“错误'数据库'不明确,从命名空间或类型'System.Data.Entity,System.Data.Entity.DbContext'导入。 "
    • 就我而言,我在Global.asax 的顶部添加了using System.Data.Entity;,并将这一行添加到Application_Start 方法中:Database.SetInitializer(new DropCreateDatabaseIfModelChanges&lt;Models.PersonDBContext&gt;());
    【解决方案2】:

    由于您在开发应用程序时听起来像是在使用代码优先的方法,所以这里有几个链接可能会对您有所帮助:

    code first development with entity framework 4

    Code First/Entity Framework 4.1 Videos and Articles on MSDN

    所有这些都可以让您更好地了解正在发生的事情以及如何解决您的数据库更改问题。

    简而言之,由于您添加了另一个属性,数据库中的实体框架表现在与您的类不再同步。由于它不再同步,您必须手动删除此数据库才能重新生成它,或者您必须为数据库创建一个初始化。我提供的链接中更好地描述了所有这些概念。

    祝你好运,希望这些对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多