刚刚使用EF,还没搞明白,遇到下面问题,记录一下。
都说EF好用,一直也没用过,以前写代码都是ADO.NET,写起来费时费力还没什么大进展,如果能把这些事简化一下把精力放到逻辑或者更有用的地方岂不是更好。所以想使用EF。Code First,从字面的意思来看是先有代码后有数据库,通过Model来创建数据库,好像只能是通过Model来生成数据库,至少我接触2天以来是这样,项目已经开始一段时间了,数据库已经有一定的数据,虽然是测试数据,但也不想删掉,从新添加数据也是很烦人的事。想找到一种能够不删除数据表还能使用Code First的方法。
这个工具很不错但Model有变化的时候可以使用命令直接更新到数据库中,网上找了好长时间都是从Model更新到数据库,没提到怎么将现有数据库中的表加入都这个更新中。Google了一天终于看到了方法,其实Migrations为我们想到了。
Migrations使用方法:https://msdn.microsoft.com/zh-cn/data/jj591621
将现有表加入到Migrations中的方法:https://channel9.msdn.com/Blogs/EF/Migrations-Existing-Databases
其实很简单。
1、使用ADO.NET实例数据模型工具,来自数据库的Code First,将需要的表的Model生成到项目中,这个时候必要的Model模型已经出来了。
2、我做的时候把生成模型的DbContext删除掉了,用我自己的DbContext,毕竟有那么多的DbContext连接的功能还是一样的看起来很碍眼,把生成的DbSet复制到自己的DbContext中。
3、使用Add-Migrations -IgnoreChanges,我感觉这里才是重点,如果没启用Migrations启用一下,Enable-Migrations上边有使用方法。
4、Update-Database这个时候应该就可以了。
5、如果更新Model,Add-Migrations命令,再Update-Database就可以了。
原文:http://www.cnblogs.com/qiumc/p/5122917.html