Example #1
0
        int _tableKeyIndex; //is used to generate unique index names

        #endregion Fields

        #region Constructors

        public DbModelBuilder(EntityModel entityModel, DbModelConfig config, MemoryLog log)
        {
            _entityModel = entityModel;
              _config = config;
              _log = log;
              _driver = _config.Driver;
        }
Example #2
0
 public DbModelLoader(DbSettings settings, MemoryLog log)
 {
     Settings = settings;
       Log = log;
       Driver = Settings.ModelConfig.Driver;
       SetupSchemas(Settings.GetSchemas());
 }
Example #3
0
        public void AddDbModelChanges(DbUpgradeInfo upgradeInfo, MemoryLog log)
        {
            _upgradeInfo = upgradeInfo;
              _newModel = upgradeInfo.NewDbModel;
              _oldModel = upgradeInfo.OldDbModel;
              _log = log;
              _options = _upgradeInfo.Settings.UpgradeOptions;
              var driver = _newModel.Driver;
              _useRefIntegrity = driver.Supports(DbFeatures.ReferentialConstraints) && _newModel.Config.Options.IsSet(DbOptions.UseRefIntegrity) ;
              _compareTables = _options.IsSet(DbUpgradeOptions.UpdateTables);
              _compareIndexes = _options.IsSet(DbUpgradeOptions.UpdateIndexes);
              _compareViews = driver.Supports(DbFeatures.Views) && _options.IsSet(DbUpgradeOptions.UpdateViews);
              var usesStoredProcs = driver.Supports(DbFeatures.StoredProcedures) && _newModel.Config.Options.IsSet(DbOptions.UseStoredProcs);
              _compareStoredProcs = usesStoredProcs && _options.IsSet(DbUpgradeOptions.UpdateStoredProcs);
              _dropUnknown = _options.IsSet(DbUpgradeOptions.DropUnknownObjects);
              _supportsSchemas = driver.Supports(DbFeatures.Schemas);
              _supportsOrderInIndexes = driver.Supports(DbFeatures.OrderedColumnsInIndexes);

              // Nullify all obj.Peer fields to make sure we drop references to old model - mostly convenience in debugging
              // to allow multiple entry into this method in debugger
              _oldModel.ResetPeerRefs();
              MatchObjectsWithPeers();

              //new stuff
              BuildChangeList();

              // Do not do it here, refs to old objects might be need by Sql generators; we will reset refs after completing update
              // _newModel.ResetPeerRefs()
        }
Example #4
0
 public PgDbModelLoader(DbSettings settings, MemoryLog log)
     : base(settings, log)
 {
     // Value identifying tables in information_schema.Tables view; for Postgres it is 'BASE TABLE'
       base.TableTypeTag = "BASE TABLE";
       // Value identifying routines in information_schema.Routines view
       base.RoutineTypeTag = "FUNCTION";
 }
Example #5
0
 public DbUpgradeManager(DataSource dataSource)
 {
     _dataSource = dataSource;
       _dataAccess = (DataAccessService) _dataSource.App.DataAccess;
       _database = _dataSource.Database;
       _app = _database.DbModel.EntityApp;
       _log = _app.ActivationLog;
       _timeService = _app.GetService<ITimeService>();
 }
Example #6
0
 public static DbModel LoadDbModel(string schema, MemoryLog log)
 {
     if (Driver == null)
     SetupForTestExplorerMode();
       var dbSettings = new DbSettings(Driver, DbOptions, ConnectionString);
       dbSettings.SetSchemas(new[] { schema });
       var loader = Driver.CreateDbModelLoader(dbSettings, log);
       var dbModel = loader.LoadModel();
       if (log.HasErrors())
     Util.Throw("Model loading errors: \r\n" + log.GetAllAsText());
       return dbModel;
 }
Example #7
0
 public static EntityMemberInfo FindEntityRefMember(this EntityInfo inEntity, string memberNameToFind, Type typeToFind, EntityMemberInfo listMember, MemoryLog log)
 {
     IList<EntityMemberInfo> refMembers;
       if (!string.IsNullOrEmpty(memberNameToFind)) {
     refMembers = inEntity.Members.FindAll(m => m.MemberName == memberNameToFind);
       } else
     refMembers = inEntity.Members.FindAll(m => m.DataType == typeToFind ||
       m.DataType.IsAssignableFrom(typeToFind) || typeToFind.IsAssignableFrom(m.DataType));
       if (refMembers.Count == 1)
     return refMembers[0];
       //Report error
       var listMemberDesc = listMember.Entity.FullName + "." + listMember.MemberName;
       if (refMembers.Count == 0)
     log.Error("EntityList member {0}: could not find matching foreign key member in target entity {1}. ",
       listMemberDesc, inEntity.EntityType);
       if (refMembers.Count > 1)
     log.Error("EntityList member {0}: more than one matching foreign key member in target entity {1}. ",
       listMemberDesc, inEntity.EntityType);
       return null;
 }
Example #8
0
 public abstract DbModelLoader CreateDbModelLoader(DbSettings settings, MemoryLog log);
Example #9
0
 public override DbTypeInfo GetDbTypeInfo(Entities.Model.EntityMemberInfo member, MemoryLog log)
 {
     var typeInfo = base.GetDbTypeInfo(member, log);
       if(member.DataType == typeof(TimeSpan) || member.DataType == typeof(TimeSpan?))
     typeInfo.PropertyToColumnConverter = CheckTimeSpanProperty;
       return typeInfo;
 }
Example #10
0
 public override DbModelLoader CreateDbModelLoader(DbSettings settings, MemoryLog log)
 {
     return new MySqlDbModelLoader(settings, log);
 }
Example #11
0
 public MsSqlDbModelLoader(DbSettings settings, MemoryLog log)
     : base(settings, log)
 {
     base.TableTypeTag = "BASE TABLE";
       base.RoutineTypeTag = "PROCEDURE";
 }
Example #12
0
 public AppInitEventArgs(EntityApp app, MemoryLog log, EntityAppInitStep step)
 {
     App = app;
       Log = log;
       Step = step;
 }
Example #13
0
 public AttributeContext(EntityModel model, MemoryLog activationLog)
 {
     Model = model;
       Log = activationLog;
 }
Example #14
0
 public SqlCeDbModelLoader(DbSettings settings, MemoryLog log)
     : base(settings, log)
 {
 }
Example #15
0
 public EntityCommandBuilder(EntityModel model, MemoryLog log)
 {
     _model = model;
       _log = log;
 }