您的位置:首页 > 其它

EntityFramework CodeFirst 4.3 step by step (3)

2012-07-19 23:04 309 查看
连续两天的博客平均访问量上千,给了我很大的鼓舞啊!今天继续讲Migration。

首先我们来看一个需求,假设现在不允许Users表有重复的MyBlog,那我们怎么修改呢?

现在打开Migrations文件夹,看看下面多了些什么?仔细观察不难发现,多了一些以时间戳和昨天输入的命令字符串组成的类文件,

如201207181401353_AddUser.cs是用来创建User的,代码如下:

SetValueOfMyBlog

public partial class SetValueOfMyBlog : DbMigration
{
public override void Up()
{
Sql("update Users set MyBlog=str(UserId)+'www.cnblogs'");
}

public override void Down()
{
}
}


3. Package Manager Console中输入"update-database -verbose"命令然后回车,搞定!

注意:每个Migration类文件只能用update-database -verbose命令执行一次,下次update-database -verbose命令执行的时候不会执行已经执行过的Migration类文件,即使你修改了它。

CodeFirst还可以将数据库可以恢复到某一个版本,如果我们想将revert刚才的Add-Migration SetValueOfMyBlog,我们需要使用‘Update-Database –TargetMigration:"SetValueOfMyBlog"命令,不难发现这个Migration的过程其实就是一个入栈和弹栈的过程,栈中元素就是这一个个Migration类文件。

嘿,哥们,装ReSharper了吗?装的话F12一下DbMigration类进去看看吧,究竟Migration能做多少事情,一下DbMigration类的源码就知道了,我唯一觉得有点反感的是里面居然没有注释,顿时就不想看下去,我承认它的很多方法名字都取的很好,但是方法参数总要解释一下的吧。。。这要在我们公司StyleCopy是run不过去的,代码就不能check in(不得不说德国人做事情真是细致入微啊)。。。突然又想写一写Clean Code方面的东西了,先欠着园子里的朋友,以后还上!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: