我之前在项目中使用 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);
在控制台中启用自动迁移时创建配置类。看看这个msdn demo 。 另外,我不确定您的代码第一模型是否会以这种方式工作。如果没有尝试使用属性更改您的字段。
namespace DataModels
{
public class StoreClient
{
public int Id { get; set; }
public string DisplayName { get; set; }
public StoreClient()
{
}
}
}
关于c# - 从 Entity Framework 6 + MySQL 的代码设置数据库创建/迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23956546/