[英]EF6 code-first: access to database before update database
我正在尝试使用代码优先的EF6.1创建一个项目。 一切正常我启用了迁移,创建和更新数据库的工作也是如此。 现在我的问题是:我已经创建了一个表“ VersionHistory”和一个CompanyInfo表。
我正在编写一个“升级向导”来更新数据库。 在开始数据库更新之前,是否可以从此表中获取数据以显示信息(例如YourCompanyName和从程序版本1.x到1.y的更新)?
我应该为此使用经典的SQLConnection吗?
非常感谢
您可以使用SQL连接(可以与EF相同),也可以禁用EF数据库结构检查。
System.Data.Entity.Database.SetInitializer<MyModel>(null);
编辑
如果访问未在数据库上更新的实体,则可以从EF接收Ado异常(即缺少列,丢失表等)。
为了符合“ bubi”,我将基于Context使用一个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);
}
谢谢
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.