Пример #1
0
 // We cannot use regular access thru EntitySession - db info/version loads at the very start of connecting to db;
 // the entity app is not ready yet (schema not updated, etc).
 public DbVersionInfo LoadDbInfo(DbSettings settings, string appName, Vita.Data.Driver.DbModelLoader loader)
 {
     var thisSchema = settings.ModelConfig.GetSchema(this.Area);
       if (!loader.TableExists(thisSchema, "DbInfo"))
     return null;
       var dbInfoTableName = settings.Driver.GetFullName(thisSchema, "DbInfo");
       var dbModuleInfoTableName = settings.Driver.GetFullName(thisSchema, "DbModuleInfo");
       try {
     var dbInfo = new DbVersionInfo();
     var sql = string.Format("SELECT * FROM {0};", dbInfoTableName);
     var dt = loader.ExecuteSelect(sql);
     var appRow = dt.Rows.FindRow("AppName", appName);
     if (appRow != null) {
       dbInfo.InstanceType = (DbInstanceType)appRow.GetAsInt("InstanceType");
       var strVersion = appRow.GetAsString("Version");
       Version dbVersion;
       if (Version.TryParse(strVersion, out dbVersion))
     dbInfo.Version = dbVersion;
       // 'Values' column appears in v 1.1
       if (dt.Columns.Contains("Values")) {
     var strValues = appRow.GetAsString("Values");
     DeserializeValues(dbInfo, strValues);
       }
     } //if appRow
     //Read modules
     sql = string.Format("SELECT * FROM {0};", dbModuleInfoTableName);
     dt = loader.ExecuteSelect(sql);
     foreach(DataRow row in dt.Rows) {
       var moduleName = row.GetAsString("ModuleName");
       var schema = row.GetAsString("Schema");
       var strModuleVersion = row.GetAsString("Version");
       Version v;
       if (!Version.TryParse(strModuleVersion, out v))
     v = null;
       dbInfo.Modules.Add(new ModuleDbVersionInfo(schema, moduleName, v));
     }
     return dbInfo;
       } catch (Exception ex) {
     Trace.WriteLine("Failed to load DbInfo record:  " + ex.ToLogString());
     //Debugger.Break();
     return null;
       }
 }