【发布时间】:2012-12-21 15:38:37
【问题描述】:
我在 Asp.net 项目中使用 EF Code First。 Code First 很好地创建了我的数据库,但我很适合让它为我的数据库提供数据。我正在使用这样的自定义数据库初始化程序:
namespace Toolkit.Model
{
public class EntitiesContextInitializer : DropCreateDatabaseIfModelChanges<ToolkitContext>
{
protected override void Seed(ToolkitContext context)
{
List<Server> Servers = new List<Server>
{
new Server { ServerName = "Server 16" },
new Server { ServerName = "Server 29" }
};
foreach (Server server in Servers)
{
context.Servers.Add(server);
}
context.SaveChanges();
}
}
}
我在 Global.asax.cs 中设置了初始化程序并强制数据库像这样初始化:
using Toolkit.Model;
namespace Toolkit
{
public class Global : System.Web.HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
Database.SetInitializer(new EntitiesContextInitializer());
var context = new ToolkitContext();
context.Database.Initialize(false);
}
...
}
问题是我的初始化程序永远不会被调用,因此我的数据库永远不会被填充。我什至尝试将初始化程序更改为继承 DropCreateDatabaseAlways 但仍然没有...我在这里缺少什么?
编辑 因此,在删除数据库后,我的初始化程序被调用得很好。但是我仍然想知道为什么它没有在其他情况下被调用,例如当我添加一个表时(因此模型发生了变化)或者当我将初始化程序更改为 DropCreateDatabaseAlways 时。
【问题讨论】:
-
您的连接字符串是否正确?您可以使用该上下文保存任何内容吗?
-
@IronMan84 是的,我连接良好。
标签: c# asp.net entity-framework ef-code-first