[英]EF Migrations for Database-first approach?
我们正在使用Database First方法和EntityFramework。 我们有几个客户,当我们部署新产品版本时,我们现在正在使用SQL Compare
等工具“手动”应用数据库架构更改。
有没有一种方法可以帮助EF Migrations自动将更改应用于客户数据库?
据我所知,EF Migrations是针对CodeFirst的产品,不支持Database First操作。
CodeFirst假定您永远不会手动对数据库进行任何更改。 对数据库的所有更改都将通过代码首次迁移完成。
我觉得有! 您需要先继续完成代码。
为此,假设您有EF Db首次为您创建的以下DbContext:
public class MyDbContext : DbContext
{
public MyDbContext()
: base("Name=DefaultConnection")
{
}
// DbSets ...
}
将其更改为以下内容以首先开始使用代码及其所有魔术工具(迁移等):
public class MyDbContext : DbContext
{
public MyDbContext()
: base("YourDbFileName")
{
}
// DbSets ...
}
这会导致EF在您的web.config文件中使用SQL Express在您的本地计算机上创建一个新的连接字符串,其名称为YourDbFileName,就像首先创建的早期DefaultConnection Db一样。
您可能需要继续前进的方法是根据您的服务器和其他选项编辑YourDbFileName ConStr。
启动Entity Framework 4.1,您可以使用现有数据库执行Code First Migrations 。
首先,您拥有数据库,创建模型,启用迁移。
最重要的是要记住,在对模式进行任何更改之前,应该运行Enable-Migrations,因为它应该在您的数据库和代码之间保持同步。
只需查找您的DbContext子对象并查找此方法:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
如果你评论这个:
throw new UnintentionalCodeFirstException();
那么迁移操作就不会引发异常。 正如您可能想象的那样,迁移查找此部分以了解具有哪些表或表的每个实体的配置。
对不起,如果我没有提供更多细节,如果你想要更多,我会很乐意编辑它并让它变得更好!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.