Entity Framework Core 2.1,添加种子数据
EFCore 2.1出来有一段时间了,里面的新功能还没怎么用,今天研究下如何使用EF Core 2.1添加种子数据。
里面还涉及到其它的Model,不过本文用不到,就不贴了。
这里我添加了一个省份的种子数据,并写上了主键Id的值。
生成的SQL脚本
迁移到数据库
结果是成功的。
虽然曾经存在过Id为1的数据(然后被删除了),但是Id为1的种子数据仍然可以插入进去。
然后Add-Migration,看看会发生什么:
报错了,所以主键值是必填的。
更改现有的种子数据
执行Update-Database时的SQL语句:
可以看到是根据主键对数据库里面的数据进行Update动作。
如果我把HasData里种子数据的主键值修改了
我把四川的主键从2改为3。
先删除了之前添加的Id为2的种子数据,然后把插入了一笔Id为3的数据。
也是先Delete,再Insert。
种子数据为什么要指定主键的值?
然后Add-Migration
这样做不行。我必须单独添加City的种子数据,并且设置好外键。
这次Add-Migration没有报错,迁移也成功了,看一下最后的数据:
OK
然后就可以这样添加种子数据:
迁移后的数据:
结果仍然如预期一样。
看下数据:
貌似没问题。
删除原来的数据,再插入一个新的数据。。
所以最好的办法是把Guid的值放在一个变量里:
领取专属 10元无门槛券
私享最新 技术干货