"无效的对象名称"在使用DbMigrationsConfiguration播种空数据库时出现异常

时间:2017-11-22 23:10:32

标签: entity-framework

在数据库迁移之前,我可以在没有数据库时使用CreateDatabaseIfNotExists和种子。但是,我已经引入了迁移,因此将我的Configuration类更改为基于DbMigrationsConfiguration。但是使用DbMigrationsConfigurtion,种子函数在没有数据库的context.SaveChanges()期间失败:

启动期间:

Database.SetInitializer(new MigrateDatabaseToLatestVersion<RegistrationServerContext, Migrations.Configuration>());
RegistrationServerContext db = new RegistrationServerContext();
db.Database.Initialize(true)

型号/的DbContext:

public class RegistrationServerContext : DbContext
{
    public DbSet<ABC> ABCs { get; set; }
    public DbSet<XYZ> XYZs { get; set; }
}

在配置中:

    internal sealed class Configuration : DbMigrationsConfiguration<Models.RegistrationServerContext>
    {
        public Configuration()
        {
            AutomaticMigrationsEnabled = true;
        }

        protected override void Seed(Models.RegistrationServerContext context)
        {
           SeedABCs(context);
           base.Seed(context);
        }

        private void SeedABCs(Models.RegistrationServerContext context)
        {
            var reader = new StreamReader(..);
            Models.ABC seedABC = new Models.ABC();
            while (!reader.EndOfStream)
            {
               var line = reader.ReadLine();
               var values = line.Split(',');
               seedABC.a = values[0];
               seedABC.b = values[1];
               seedABC.c = values[2];
               context.ABCs.Add(seedABC);// <== seedABC is good/valid
               context.SaveChanges();// **<== FAILS HERE**
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

所以,不是SQL专家,我现在意识到数据库还没有删除 - 使用SQL Server的Management Studio来删除数据库,现在播种工作正常。尽管实体框架可以保护您免受SQL诡计的影响,但最好还是检查底层数据库技术以确认操作。