asp.mvc 错误收集

1.使用CodeFirst,改变Models报错。

The model backing the 'XXXXDBContext' context has changed since the database was created. Either manually delete/update the database, or call Database.SetInitializer with an IDatabaseInitializer instance. For example, the DropCreateDatabaseIfModelChanges strategy will automatically delete and recreate the database, and optionally seed it with new data.

解决方法1:在Global.asax中的Application_Start方法中加入:Database.SetInitializer<XXXXDBContext>(null);
 
解决方法2:删除对应数据库中自动生成的表: XX数据库->Tables->SystemTables->_MigrationHistory
   
解决方法3:在VS中 Tools->Library Package Manager->Package Manager Console 依次执行以下命令
                Enable Migrations ->  Add-Migration -> Update Database
                (如果你的mvc项目只在一个工程里,运行这3个命令,就会重新生成数据库表结构)
        注意:如果你改变了MVC默认的项目结构,比如把XXXDbContext.cs放在了另一个项目里。可能会报错。
   
   运行Enable Migrations,会生成Migrations目录以及Configuration.cs文件
  
  运行Add-Migration,会要求输入Name,这里可以随便输入什么名字。
会在Migrations目录生成按日期和输入的Name组成的文件名。
  在生成的文件里。。可以去手动的修改代码。。
  如果你有修改字段的名字,并且想要保留数据库中的记录。。可能就需要按图修改代码。
           
  最后运行Update-Database就可以更新到数据库中。
 
  这里的命令对于默认项目结构一般是不会报错的。。如果你改变了项目结构,就可能没这么简单了。目前我没找到什么好方法。就按照方法一做了。
 
  其他一些命令:
          install-packages entityframework,  Install-Package -ProjectName 这里输入DbContext所在项目名 entityframework
          Enable-Migrations -ProjectName XXX -StartUpProjectName XXXX
          Add-Migration -ProjectName XXX -StartUpProjectName XXX
          help或者get-help  命令名 可以查看命令的详细帮助: 如 help install-package
 
  由于我的项目,model和DbContext,Controller都不在一个项目中。。所以运行上面命令有错误。
  目前还没找到解决方法。等找到了再来更新本文
 
posted @ 2013-12-12 10:37  FamousRookie  阅读(117)  评论(0)    收藏  举报