gpt4 book ai didi

c# - Entity Framework 6 添加迁移在迁移脚本中添加所有表/实体

转载 作者:太空宇宙 更新时间:2023-11-03 15:49:39 25 4
gpt4 key购买 nike

我正在尝试在 Entity Framework 6.0 中运行代码优先迁移。我在实体模式中添加了 4 个新实体。但是,当我在 VS 2013 中运行“add-migration”命令时,生成的迁移文件在我的模式中包含所有权利的脚本(就像初始迁移一样),尽管它们已经在链接数据库中。显然,当我朗读“更新数据库”时,它会生成实体已存在的错误。我的 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)
{
}
}

任何想法,如何解决这个问题。几天前它对我来说工作正常但现在我面临这个问题:(

最佳答案

检查迁移历史记录中的上下文键是否已更改。

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

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

即使那样......也可能不是 100%。我的大部分更改都是正确的,但它开始添加一个已经存在的表,然后转身将其删除。

关于c# - Entity Framework 6 添加迁移在迁移脚本中添加所有表/实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26464208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com