我正在尝试使用EF6.1创建一个代码优先的项目。一切正常我已启用迁移,创建和更新数据库也可以。现在我的问题: 我创建了一个表“VersionHistory”和一个CompanyInfo表。
我正在写一个“升级Wizzard”来更新数据库。在开始数据库更新之前,是否可以从此表中获取数据以显示信息(例如,YourCompanyName和从程序版本1.x更新到1.y)?
我应该使用经典的SQLConnection吗?
非常感谢
答案 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);
}
由于