EF数据迁移之NOP项目应用
遇到问题及成功解决后怕之后忘记而作以下记录。
目的:通过EF数据迁移功能达到项目里模型改变(表字段的增加修改、表的新增修改)后更新到数据库的效果。
解决方案:EF数据迁移工具(Migrations)。
步骤:
一、为Nop.Data\NopObjectContext增加无参构造函数,并向基类传递“连接字符串”或“连接字符串配置名称”。如为连接字符串名称方式,则以此名称在Nop.Web\Web.config里添加连接字符串,并将Nop.Web设为启动项(否则可能出现执行update-database命令时自动将连接字符串内"."改为".\EXPRESS"而造成连不上数据库)。
二、在程序包管理控制台窗口对Nop.Data执行迁移操作。

1,Enable-Migrations :启用迁移
2,add-migration InitialMigration -IgnoreChanges :以InitialMigration名称添加当前状态的迁移数据(忽略更改,用于数据库已有此版本结构,不需要实质更新数据库更新)
3,update-database -Verbose :更新到数据库,Verbose参数用于显示详细执行的SQL
4,修改模型(如:添加表、添加字段)
5,add-migration addTest1 :再次以当前程序的状态添加迁移版本(成功后打开的代码文件里Up、Down方法会有影响数据库的相应代码)

6,update-database -Verbose :更新到数据库,成功后对模型的修改将更新到数据库中。
如需返回到之前某个版本,如取消第6步,则通过update-database -Verbose –TargetMigration:InitialMigration 此命令达到目的。
InitialMigration为要退回到的目标版本的号码。
摘要(遇到的问题及解决):此工具通过NuGet程序包管理器控制台进行命令操作。运行此工具的基础环境为项目先安装EntityFramework包,如还提示类似“AAA”已拥有为“BBB”定义的依赖项,的错误信息提示,不能正常执行命令。此类信息是由于解决方案中某项目安装了AAA包,而AAA包的版本依赖BBB,且项目里引用的BBB版本达不到指定版本要求,解决此问题可将AAA包卸载重新安装低版本(如还有问题直接把包里DLL拷出直接引用,再删除解决方案里packages文件夹下AAA包文件夹),故可正常执行迁移命令。
浙公网安备 33010602011771号