假设我们有一个ASP.NET MVC3网站,它使用Entity Framework Code First方法来处理数据库。
系统现在正在测试环境中工作。
如果DbContext的部分如下:
public DbSet<Incident> Incidents { get; set; }
是否会导致DB-Code协作问题,例如,如果我将属性添加到Incident类?
或者框架是否会自动更新数据库表,并将处理没有新属性的旧记录,就好像它们是空的一样?
答案 0 :(得分:2)
它取消了您的数据库初始化设置。 (CreateDatabaseIfNotExists,DropCreateDatabaseWhenModelChanges,DropCreateDatabaseAlways)
例如:Database.SetInitializer(new CreateDatabaseIfNotExists())
如果未设置任何数据库初始化,EF将使用默认值 initlizer“ CreateDatabaseIfNotExists ”,它会抛出 InvalidOperationError。
如果设置为“ DropCreateDatabaseWhenModelChanges ”,则EF会重新创建 数据库基于您的新模型。但你也需要必要的 访问权限来创建数据库,如果你在,这是危险的 生产环境。
如果您设置为“ DropCreateDatabaseAlways ”,则EF会在每次重新创建数据库时 你运行应用程序。
答案 1 :(得分:0)
据我所知,它不会自动更新数据库,您将收到一条错误消息,告诉您Context已更改。在那里,你必须对数据库进行“删除和创建”!!