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