And*_*ard 12 c# entity-framework
我DatabaseInitializer
上课了
public class DatabaseInitializer : CreateDatabaseIfNotExists<DatabaseContext>
{
protected override void Seed
(
DatabaseContext databaseContext
)
{
// Seed the hash methods.
var defaultHashMethod = new HashMethod
{
Description = "Default",
CreateDate = DateTime.Now
};
databaseContext.HashMethod.Add(defaultHashMethod);
databaseContext.SaveChanges();
}
}
Run Code Online (Sandbox Code Playgroud)
在我的DatabaseContext类中,我设置了初始化程序
public DatabaseContext() : base("DatabaseContext")
{
InitializeDatabase();
}
private void InitializeDatabase()
{
Database.SetInitializer(new DatabaseInitializer());
if (!Database.Exists())
{
Database.Initialize(true);
}
}
Run Code Online (Sandbox Code Playgroud)
据我所知,只有在执行查询等操作时才会调用种子方法.我的数据库已成功创建,我正在查询表,但从不调用种子方法.
更新:
似乎问题是由于inheriting
我的DatabaseContext
类中的类引起的,当使用此类执行数据库操作时,不会调用种子方法.使用我的DatabaseContext
课程时,一切都按预期工作
public DbSet<TestEntity> TestEntity { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
Run Code Online (Sandbox Code Playgroud)
jum*_*uro 15
你需要打电话Update-Database
给Package Manager Console
.
我能让它工作的唯一方法就是自己调用种子方法
以下是我的DatabaseContext类的方法
public DatabaseContext() : base("DatabaseContext")
{
InitializeDatabase();
}
public DatabaseContext(string connectionString) : base(connectionString)
{
Database.Connection.ConnectionString = connectionString;
InitializeDatabase();
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
Run Code Online (Sandbox Code Playgroud)
在这里,我更改了我的InitializeDatabase方法
private void InitializeDatabase()
{
Database.SetInitializer(new DatabaseInitializer());
if (!Database.Exists())
{
Database.Initialize(true);
}
}
Run Code Online (Sandbox Code Playgroud)
至
protected virtual void InitializeDatabase()
{
if (!Database.Exists())
{
Database.Initialize(true);
new DatabaseInitializer().Seed(this);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您的 Update-Database 命令未成功运行,则可能会发生这种情况,但这并不一定意味着它出错了。可能存在 EF 认为“未完成”的更改需要添加到迁移中。
尝试调用“Add-Migration {migrationNameHere}”,然后再次尝试“Update-Database”。