EntityFramework 6 + MySQL: 模型表不会自动创建

3

我尝试使用EF6和MySQL。我确定我的数据库连接正常工作,因为首选的数据库模式存在。但是,只有__migration表存在。

我有以下代码

我的模型

[Table("my_model")]
public class ModelA
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ModelAId { get; set; }

    public string ModelAProperty { get; set; }
}

我的DBContext

public class ModelAContext : DbContext
{
    public ModelAContext() : base("DefaultConnection")
    {

    }

    static ModelAContext()
    {
        Database.SetInitializer( new DropCreateDatabaseIfModelChanges<ModelAContext>());
    }

    public DbSet<ModelA> MyModels { get; set; } 
}

我的初始化程序
// Assuming this is run during the application initialization
    public static void InitializeDB()
    {
        using (var context = new ModelAContext())
        {
            if (!context.Database.Exists())
            {
                // Create the SimpleMembership database without Entity Framework migration schema
                ((IObjectContextAdapter)context).ObjectContext.CreateDatabase();
            }
            context.Database.CreateIfNotExists();
        }
    }

ModelA对应的表未被创建。

我总是遇到一个MySQL异常,其中一个表(在这种情况下是app.my_model)不存在。

非常感谢任何帮助。

附言:如果您有任何好的教程可以在ASP.NET MVC4中设置我的MySQL和EF6,那就太好了。目前,我似乎无法使用MVC4的WebSecurity帮助程序。


关于如何设置EF6和MySQL一起使用,这是我几个月前做的一些研究笔记,希望能有所帮助 - https://dev59.com/6GIj5IYBdhLWcg3wb0jX#20294903 - francisco.preller
@francisco.preller,感谢您的回复。我已经阅读了您在链接中的答案。我已经成功让MySQL和EF6工作了,但是模型的表格没有被自动创建。似乎context.Database.CreateIfNotExists()只会创建数据库/架构而不是表格。根据我的研究,他们说我需要创建一个查询到DbSet来初始化表格,但是我总是得到表格不存在的错误。 - edmandie
1个回答

1
在你的Global.ascx广告中。
  AppDbContext db = new AppDbContext();
            db.Database.Initialize(true);

这些代码在Global.ascx上下文中具体做什么?使用这种方法迁移是否仍然有效? - Michael Kargl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接