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包文件夹),故可正常执行迁移命令。

posted on 2016-11-25 14:18  J.  阅读(175)  评论(0)    收藏  举报