EF6代码优先:在更新数据库

时间:2016-03-10 07:12:21

标签: entity-framework entity-framework-6

我正在尝试使用EF6.1创建一个代码优先的项目。一切正常我已启用迁移,创建和更新数据库也可以。现在我的问题: 我创建了一个表“VersionHistory”和一个CompanyInfo表。

我正在写一个“升级Wizzard”来更新数据库。在开始数据库更新之前,是否可以从此表中获取数据以显示信息(例如,YourCompanyName和从程序版本1.x更新到1.y)?

我应该使用经典的SQLConnection吗?

非常感谢

2 个答案:

答案 0 :(得分:0)

您可以使用SQL连接(它可以与EF相同),也可以禁用EF数据库结构检查。

System.Data.Entity.Database.SetInitializer<MyModel>(null);

修改

如果您访问未在数据库上更新的实体,您可以从EF接收Ado例外(即缺少列,缺少表等)。

答案 1 :(得分:0)

遵守&#34; bubi&#34;我将根据我的上下文使用SQLConnection,例如

using (var ctx = new AppContext()) {
ctx.Database.Connection.Open();

var cmd = ctx.Database.Connection.CreateCommand();
cmd.CommandText = "Select * From CompanyInfo";

var rdr = cmd.ExecuteReader();
var infos = (from row in rdr.Cast<System.Data.Common.DbDataRecord>()

             let entityId = (int)row["EntityId"] //internal key
             let entityKey = (string)row["EntityKey"] //visible key
             let displayname = (string)row["DisplayName"] //company name

             // some more stuff (version, etc.)

             select new NOCompanyInfo {
                 EntityId = entityId,
                 EntityKey = entityKey,
                 DisplayName = displayname,
                 DBName = dbName,
                 ...
             }).ToList();

return new ObservableCollection<NOCompanyInfo>(infos);

}

由于