吵吵   2014-04-03  阅读:3,380

自从用上了Entity Framework(简称EF),妈妈再也不用担心我要写那么复杂的SQL语句了!

这是微软新一代的ORM工具,它能够将数据库的表中的记录映射成为程序中的一个对象,当然也能够将对象映射为数据库中的一条记录。

它支持三种模式Model First、Database First、Code First。

我们准备用那种方式呢?Code First。为什么呢?因为这只要写一次代码,而且不用去修改数据库。

那么,我们如果修改了代码,增加了一个字段,在model中写了之后,怎么自动修改数据库呢,用到Migration。

它有三步:

Enable-Migrations //允许使用迁移

Add-Migration 你设定一个名字(如 AddCloumText,增加字段Text) //它会自动判断这次的代码和上次的不同,然后将不同找出来

Update-database //更新数据库,它会根据不同,用sql语句修改数据库字段。

So easy是不?

Migration

我手贱,将一张建立好的表给删除了,然后每次运行Update-database 就发现找不到表XXXX

那么我就手动增加了一张表XXXX,结果还是报错:

‘PK_dbo.Equipments’ 不是约束。
未能删除约束。请参阅前面的错误信息。

啥意思?不知道,但是我们有个很好的办法

update-database -Verbose 加上Verbose参数,它会显示出修改数据库的SQL语句出来:

ALTER TABLE [dbo].[Equipments] ADD CONSTRAINT [PK_dbo.Equipments] PRIMARY KEY ([EquipID])

然后百度之,这个语句,原来是删除约束,但是我删除后新建的表是没有约束的,所以就报错了,没有关系,我用SQL增加一个主键约束,然后再update-database就通过了。

现在才知道用框架的人得基础好啊,不然出点问题就懵了!

吵吵微信朋友圈,请付款实名加入:

吵吵 吵吵

发表评论

电子邮件地址不会被公开。 必填项已用*标注