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都不在一个项目中。。所以运行上面命令有错误。
目前还没找到解决方法。等找到了再来更新本文

浙公网安备 33010602011771号