实体框架6添加迁移,在迁移脚本中添加所有表/实体

时间:2014-10-20 11:08:49

标签: c# asp.net-mvc entity-framework

我正在尝试在实体框架6.0中运行代码第一次迁移。我在我的实体模态中添加了4个新实体。但是当我运行" add-migration"在VS 2013中,生成的迁移文件包含我的模式中所有权限的脚本(就像初始迁移一样),尽管它们已经在链接数据库中。显然当我朗姆酒"更新 - 数据库"赞扬,它生成实体已经存在错误。我的DBContext类如下所示:

public class BidstructDbContext : DbContext
{
    public BidstructDbContext() : base(nameOrConnectionString: "Bidstruct") 
    {
        this.Configuration.LazyLoadingEnabled = false; 
    }

    public DbSet<User> Users { get; set; }
    public DbSet<Role> Roles { get; set; }
    public DbSet<Permission> Permissions { get; set; }
    public DbSet<Company> Company { get; set; }

    // New Added Table
    public DbSet<Gadgets> Gadgets { get; set; }
    public DbSet<Language> Language { get; set; }
    public DbSet<LanguageKeys> TranslationKeys { get; set; }
    public DbSet<Translations> Translations { get; set; }


    static BidstructDbContext()
    {
        Database.SetInitializer(new DatabaseInitializer());
    }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
    }      

}

和DatabaseInitializer类如下所示:

public class DatabaseInitializer :
// CreateDatabaseIfNotExists<BidstructDbContext>      // when model is stable
DropCreateDatabaseIfModelChanges<BidstructDbContext> // when iterating
{
    private const int AttendeeCount = 1000;

    // EF is NOT a good way to add a lot of new records.
    // Never has been really. Not built for that.
    // People should (and do) switch to ADO and bulk insert for that kind of thing
    // It's really for interactive apps with humans driving data creation, not machines
    private const int AttendeesWithFavoritesCount = 4;

    protected override void Seed(BidstructDbContext context)
    {
    }
}

任何想法,如何解决这个问题。几天前我的工作正常,但现在我遇到了这个问题:(

1 个答案:

答案 0 :(得分:0)

在迁移历史记录中检查您的上下文密钥是否已更改。

我正在处理一直使用自动迁移的项目,但是由于很多类更改而没有发生自动迁移。在尝试切换到非自动迁移时,Add-Migration正在重新生成整个架构。 所以我尝试将手动表更改放到DbMigration的Up()中,这会将一个迁移和一个条目应用到__MigrationHistory表中,但是使用不同的上下文键(我的配置文件的名称空间和类名)。

将上一个(较旧的)迁移记录的上下文密钥重命名为与当前密钥相同的快速测试导致向上/向下迁移正确生成。

即便如此......也许不是100%。我的大多数更改都是正确的,但它开始添加一个已经存在的表,然后转身并将其删除。