Code First添加一个现有数据库中的表

描述

刚刚使用EF,还没搞明白,遇到下面问题,记录一下。

都说Entity Framework好用,一直也没用过,以前写代码都是ADO.NET,写起来费时费力还没什么大进展,如果能把这些事简化一下把精力放到逻辑或者更有用的地方岂不是更好。所以想使用Entity Framework的Code First方式。

Code First,从字面的意思来看是先有代码后有数据库,通过代码中的Model来创建数据库,好像只能是通过Model来生成数据库,至少我接触2天以来是这样。

如果我已经有一个数据库了,而我又想用Code First怎么办?

Code First添加现有数据库

Visual Studio 2015有一个功能,添加Code First From Database,通过这个工具生成我们需要的Model和DbContext。

这个时候我们应该就可以享受Entity Framework带给我们的方便快捷了。

但是如果的表结构需要变化怎么办?

Migrations

这个工具可以让我们做到,只要Model有变化我们可以通过一个命令行把已有的变化同步到数据库中,使我们的Model和数据库表结构一致。

Migrations使用方法:https://msdn.microsoft.com/zh-cn/data/jj591621

这个工具是可以同步我们的字段,但是同步的时候会从新创建一次数据表,提示错误表对象已经存在,这是因为,Migrations认为我们刚刚通过VS生成的Model是新建的表,所以他要先数据库里创建一次表。

那我的Model刚刚生成的时候和数据库中的结构是一样的,有没有办法让Migrations知道,不需要重新创建表了?

让Migrations认识数据库中的表

下面这个视频已经给我们答案了,将现有表加入到Migrations中的方法:https://channel9.msdn.com/Blogs/EF/Migrations-Existing-Databases

其实很简单。

1、使用ADO.NET实例数据模型工具,来自数据库的Code First(VS2015),将需要的表的Model生成到项目中,这个时候必要的Model模型已经出来了。

2、我做的时候把生成模型的DbContext删除掉了,用我自己的DbContext,如果自己没创建过用生成的也可以,毕竟有那么多的DbContext连接的功能还是一样的看起来很碍眼,把生成的DbSet复制到自己的DbContext中。

3、Enable-Migrations 命令,上边有具体这个使用方法

4、使用Add-Migrations –Name Initial -IgnoreChanges,这里的IgnoreChnages参数是重点,忽略我们代码中的变化,然Migrations认为我们的代码已经和数据库中的表格式一样了,本来我们就是一样的,我们刚刚通过VS工具生成的,这个时候还没有完成任务,数据库那边并不知道你干了什么,这里只是添加了一个计划,Update-Datebase才能使我们的命令生效。

5、输入Update-Database,这个时候应该就可以了,以后在有表结构变化,修改model然后使用Migrations更新就可以了。

转载于:https://www.cnblogs.com/qiumc/p/5122917.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值