[英]Set up database creation/migrations from code for Entity Framework 6 + MySQL
我以前在项目中使用过NHibernate和Fluent Migrator来创建数据库(如果尚不存在)并通过迁移脚本更新架构。 我正在查看Entity Framework(6)进行比较,但无法复制该功能。
在我的App.config
,我设置了连接字符串和数据库提供程序。 然后,我继续创建了一个数据模型,希望将其表示为数据库中的表。
namespace DataModels
{
public class StoreClient
{
public int Id;
public string DisplayName;
public StoreClient()
{
}
}
}
然后,我继续创建数据库上下文。
namespace DataModels
{
public class StoreContext : DbContext
{
public DbSet<StoreClient> StoreClients { get; set; }
}
}
在服务启动时,我创建了一个StoreContext
实例,并尝试添加并调用db.SaveChanges();
,但这失败了,因为没有与我的StoreClient相匹配的架构。
我的问题很简单。 如何配置StoreContext
(或通常的EF)以自动创建数据库架构,以及如何在更改该架构时将其设置为迁移?
这看起来很简单,但是我周围的搜索并没有给我任何来自NHibernate世界的看起来很熟悉的东西。
如果要自动创建数据库,请尝试在Application_Start()方法中放入一些代码。 例如:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<StoreContext, Configuration>());
StoreContext context = new StoreContext();
context.Database.Initialize(true);
在控制台中启用在自动迁移时创建Configuration类的位置。 查看此msdn 演示 。 另外我也不保证您的代码冷杉模型会那样工作。 如果没有,请尝试使用属性更改字段。
namespace DataModels
{
public class StoreClient
{
public int Id { get; set; }
public string DisplayName { get; set; }
public StoreClient()
{
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.