c# - 从 Entity Framework 6 + MySQL 的代码设置数据库创建/迁移

标签 c# mysql .net entity-framework database-migration

我之前在项目中使用 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/

相关文章:

c# - RedirectToAction()和View()有什么区别

php - Mysql 连接两个查询

.net - 寻找一种实用的沙盒 .NET 插件方法

c# - 在 .NET 中获取所有格形式的本地化方法

c# - 如果这些游戏对象与 UI 无关,可以将 Canvas 对象 (rectTransform) 与常规游戏对象 (transform) 混合吗?

c# - 为什么 DrawString 看起来很糟糕?

c# - ObjectDisposedException 使用 MD5 ComputeHash 时

mysql - 基本 SQL 查询

mysql - 数据库中的重复项,帮助编辑我的查询以过滤掉它们?

c# - .NET - 终结器和退出(0)