首页 新闻 会员 周边

EF Code first 修改实体后重新创建表后如何保留现有数据。

0
[待解决问题]

EF Code first 可以设置在实体发生改变时。删除现有数据库重新创建新结构的数据库。问题来了,我现有的数据库里面可能存在了很多的数据。这时我修改了我的一个实体属性,按正常的情况是,当前数据库会被删除,然后重新创建新数据库。这时我之前的所有数据将会全部没有了,请问是否有什么好方法可以改变数据库的表结构的同时保留我原有的数据。

yzy的主页 yzy | 菜鸟二级 | 园豆:317
提问于:2014-06-22 20:10
< >
分享
所有回答(5)
0

我没有用过,不过说下我的看法吧。

作为一个的程序员,有几件事情我认为你应该要做的而没有做。

1、你试过吗?

2、试验的方式是,先建一个表,添加一行数据后。增加一个属性(注意,最简单就是增加一个字段,太复杂了估计不行)

3、如果能保留数据,说明EF Code First不象你想象的那般弱。

做过实验并不是太验,也不需要很多时间。

 

4、在我的估计中,如果你的表结构变化太大,确实有可能让系统无所适从,或者无法跟踪从而保留以前的数据,要不然保留数据这个事情,微软花点心思还是有可能实现出来的。

爱编程的大叔 | 园豆:30839 (高人七级) | 2014-06-23 10:14

你说的1 2 3点之前就已经去做过了,要不然不会上了咨询。目前我已经找到解决方法了。

支持(0) 反对(0) yzy | 园豆:317 (菜鸟二级) | 2014-06-23 11:49
0

自定义迁移

Launcher | 园豆:45045 (高人七级) | 2014-06-23 11:47
0

我用命令来建立修改表 都会保留数据的。默认会保留历史数据的 http://www.cnblogs.com/heifengwll/p/3473287.html

开山怪不怪 | 园豆:544 (小虾三级) | 2014-06-23 11:47
5

如果已经有数据,建议使用migrations功能来完成对表结构的更改

1. Tools -> Library Package Manager -> Package Manager Console

输入Enable-Migrations

2.当你修改完某个model,在 package manager console 中输入Add-Migration yourchangname

会有对应的文件生成

3.Update-Database 这个命令会把你对实体的更改 通过 migration文件对应的对数据库进行修改

._ | 园豆:297 (菜鸟二级) | 2014-06-25 20:08

恩,我已经知道这个方法了。不过还是非常感谢。

支持(0) 反对(0) yzy | 园豆:317 (菜鸟二级) | 2014-06-26 18:35

没有明白,求帮忙!谢谢

支持(0) 反对(0) 我想啸天 | 园豆:79 (初学一级) | 2015-03-26 16:36
1

楼主还在吗,问个问题。关于第一个人的问题2,创建一个表 增加一行数据后 新增一个属性 报错,怎么处理的啊

cnfanhua | 园豆:283 (菜鸟二级) | 2016-08-26 17:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册