在创建和部署数据库之后,更改实体框架消耗了类

时间:2012-01-19 14:21:29

标签: .net entity-framework dbcontext

假设我们有一个ASP.NET MVC3网站,它使用Entity Framework Code First方法来处理数据库。

系统现在正在测试环境中工作。

如果DbContext的部分如下:

public DbSet<Incident> Incidents { get; set; }

是否会导致DB-Code协作问题,例如,如果我将属性添加到Incident类?

或者框架是否会自动更新数据库表,并将处理没有新属性的旧记录,就好像它们是空的一样?

2 个答案:

答案 0 :(得分:2)

它取消了您的数据库初始化设置。 (CreateDatabaseIfNotExists,DropCreateDatabaseWhenModelChanges,DropCreateDatabaseAlways)

例如:Database.SetInitializer(new CreateDatabaseIfNotExists())

  • 如果未设置任何数据库初始化,EF将使用默认值 initlizer“ CreateDatabaseIfNotExists ”,它会抛出 InvalidOperationError。

  • 如果设置为“ DropCreateDatabaseWhenModelChanges ”,则EF会重新创建 数据库基于您的新模型。但你也需要必要的 访问权限来创建数据库,如果你在,这是危险的 生产环境。

  • 如果您设置为“ DropCreateDatabaseAlways ”,则EF会在每次重新创建数据库时 你运行应用程序。

答案 1 :(得分:0)

据我所知,它不会自动更新数据库,您将收到一条错误消息,告诉您Context已更改。在那里,你必须对数据库进行“删除和创建”!!