在数据库迁移之前,我可以在没有数据库时使用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**
}
}
}
答案 0 :(得分:0)
所以,不是SQL专家,我现在意识到数据库还没有删除 - 使用SQL Server的Management Studio来删除数据库,现在播种工作正常。尽管实体框架可以保护您免受SQL诡计的影响,但最好还是检查底层数据库技术以确认操作。