繁体   English   中英

EF6代码优先:在更新数据库之前访问数据库

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM