实体框架创建一个空的迁移文件

时间:2019-05-15 00:36:08

标签: asp.net-mvc entity-framework

我在Visual Studio中创建了我的初始项目,并发现在创建初始迁移后使用了SQL Server。然后,我将所有连接信息更改为使用MYSQL并成功连接。我再次创建了初始迁移,并创建了所有ASP安全表。我添加了一个新模型并更新了数据库,但是它创建了一个空迁移(只是UP / DOWN方法)

我尝试了在这里和其他网站上找到的多个修复程序。我退出了第二次迁移,然后重试。我尝试再次强制迁移(-f)。我删除了新的MYSQL数据库并删除了迁移,然后重新开始,所有迁移都得到了相同的结果。

这是我的模型代码:

using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace congresssucks_conversion.Models
{
    public class BlogPost : DBContext
    {
        public int Id { get; set; }
        public string Title { get; set; }
        public string ShortPost { get; set; }
        public string Post { get; set; }
        public string Tags { get; set; }
        public DateTime Updated { get; set; }
    }
}

这是迁移文件:

namespace congresssucks_conversion.Migrations
{
    using System;
    using System.Data.Entity.Migrations;

    public partial class blogpost : DbMigration
    {
        public override void Up()
        {
        }

        public override void Down()
        {
        }
    }
}

它成功完成,并且在终端窗口中没有错误。

2 个答案:

答案 0 :(得分:0)

您要结合两个单独的内容,即模型类和数据库上下文。

您的BlogPostm类不应继承DbContext,而应仅是普通的C#类。

然后您创建一个新的类,如下所示:

public class BlogDbContext : DbContext
{
    public DbSet<BlogPostm> Posts { get; set; }
}

现在,您有一个可以代表一个帖子的类,另一个可以代表具有多个博客帖子表的数据库的类。迁移生成器正在寻找这些DbSet<whatever>属性,因此您应该在更改后看到实际的迁移。

您可以通过多种方法来描述您希望实体框架对数据库执行的操作,因此值得回顾一下实体框架教程。

答案 1 :(得分:0)

尝试从_MigrationHistory表中删除最后一次迁移的记录。可能是在将新模型对象的DbSet添加到DbContext类之前,错误地创建了该记录。删除之后,将使用正确的Up()和Down()方法创建新的迁移。