EntityFramework CodeFirst – DbContext 初始化器
EntityFramework CodeFirst – DbContext 初始化器
我们已经讨论了 EntityFramework CodeFirst 方法以及如何在 http://www.dotnetfunda.com/articles/article1358-entity-framework-codefirst-model-.aspx 中从代码生成数据库。
现在,让我们看看如何处理类中的更改,该类是数据库表的基类。 我们可能需要将更改从类传播到数据库表。
考虑我们的示例 Student
类,我们将在其中添加一个新的属性,名为 Address
。
public classStudent {
publicint Id { get; set; }
publicstring FirstName { get; set; }
publicstring LastName { get; set; }
public string Address { get; set; }
publicList<Mark> Marks { get; set; }
}
现在运行应用程序并观察指示模型已更改的异常。
模型更改异常
让我们看看如何使用更改更新底层的 Student
表。 为了更新类级别的更改到表,请打开 global.asax 文件。 如果您是 ASP.NET 开发人员,您可能知道 global.asax 文件包含不同的应用程序和会话级别事件处理程序。
在 Application_Start
方法中,使用以下两种选项之一定义数据库初始化器。
DropCreateDatabaseAlways
:这将会在每次应用程序启动时删除并重新创建数据库。DropCreateDatabaseIfModelChanges
:只有当底层模型发生更改时,才会删除并创建数据库。
DbInitializer 选项
我们将使用我们的自定义 DbContext
添加 DropCreateDatabaseIfModelChanges
。
void Application_Start(object sender, EventArgs e)
{
Database.SetInitializer(newDropCreateDatabaseIfModelChanges<MyDbContext>());
}
运行应用程序并观察新的 Student
表。
更新后的 Student 表
将数据添加到表中并运行应用程序。
结果屏幕
我们可以通过继承定义的初始化器之一来定义我们自己的 DbContext
初始化器。
归类于: Entity Framework 标签: DbContext, DropCreateDatabaseIfModelChanges, EntityFramework

CodeProject