public EntityApp Build(DbFirstConfig config) { _config = config; _app = new EntityApp(); var log = new BufferedLog(); _dbSettings = new DbSettings(_config.Driver, config.Driver.GetDefaultOptions(), _config.ConnectionString); // create loader and setup filter var modelLoader = _config.Driver.CreateDbModelLoader(_dbSettings, log); modelLoader.SetSchemasSubset(_config.Schemas); //actually load model _dbModel = modelLoader.LoadModel(); Util.Check(_dbModel.Tables.Count() > 0, "No tables found in the database. Code generation aborted."); // Prepare type generator _tempNamespace = "_dummy_" + _callCount++; // artificial unique namespace for dummy interface types // Construct model setup and model GenerateModulesAndAreas(); _entityModel = new EntityModel(_app); // EntityModelBuilder.SetModel(_app, _entityModel); //generate entities and members GenerateEntities(); SetupPrimaryKeys(); GenerateReferenceMembers(); CreateIndexes(); SetupKeyMembers(); return(_app); }
/// <summary> /// Initializes the loggers and set the proper one according to the given parameters. If a DevNull mode is set at the beginning, the other logging modes become unavailable. /// </summary> /// <param name="loggingMode">Determines what kind of logging mode will be used to perform all the outputs.</param> /// <param name="isBinaryEnabled">Determines if the binary writing is enabled when the logging mode is set to File mode, otherwise it has no effect.</param> public void InitiLogging(Log.LogginMode loggingMode, bool isBinaryEnabled) { this.loggingMode = loggingMode; this.binaryEnabled = isBinaryEnabled; switch (this.loggingMode) { case Log.LogginMode.Console: this.fileLogger = null; this.consoleLogger = new ConsoleLog(); this.log = this.consoleLogger; break; case Log.LogginMode.File: this.consoleLogger = null; this.fileLogger = new FileLog(this.ioFilePath + FileLog.GetAUniqueFilename("KSPMLog"), this.binaryEnabled); this.log = this.fileLogger; break; case Log.LogginMode.Buffered: this.consoleLogger = null; this.fileLogger = null; this.bufferLogger = new BufferedLog(); this.log = this.bufferLogger; break; ///In this mode no other loggers will be created, so if you need to change the logging mode we have to create a method to handle that action. case Log.LogginMode.DevNull: this.log = this.nullLogger; break; } }
public bool GenerateScripts(XmlDocument xmlConfig) { const string header = @"-- DDL Scripts generated by VITA DB Tool. -- Generated on: {0} -- Target database: {1} -- Executed by user {2} on machine {3}. "; _config = new DbUpdateConfig(xmlConfig); Util.Check(File.Exists(_config.AssemblyPath), "Assembly file '{0}' not found.", _config.AssemblyPath); var asm = Assembly.LoadFrom(_config.AssemblyPath); var appType = asm.GetType(_config.AppClassName); Util.Check(appType != null, "Type {0} not found in target assembly."); // Using NonPublic flag to allow internal constructor; // EntityApp must have a parameterless constructor, but it may be made internal, to hide from regular code var flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance; var appObj = Activator.CreateInstance(appType, flags, null, null, null); Util.Check(appObj != null, "Failed to create instance of class {0}.", _config.AppClassName); var entApp = appObj as EntityApp; Util.Check(entApp != null, "The target instance of class {0} is not an EntityApp instance.", _config.AppClassName); entApp.Init(); var dbSettings = new DbSettings(_config.Driver, _config.DbOptions, _config.ConnectionString, upgradeMode: DbUpgradeMode.Always, upgradeOptions: _config.ModelUpdateOptions); /* * var schemas = entApp.Areas.Select(a => a.Name).ToList(); * dbSettings.SetSchemas(schemas); */ var log = new BufferedLog(LogContext.SystemLogContext); var dbModelBuilder = new DbModelBuilder(entApp.Model, dbSettings.ModelConfig, log); var dbModel = dbModelBuilder.Build(); var db = new Database(dbModel, dbSettings); var updateMgr = new DbUpgradeManager(db, log); var upgrades = updateMgr.BuildUpgradeInfo(); var ddlSep = dbModel.Driver.SqlDialect.DDLSeparator; var ddl = string.Join(ddlSep, upgrades.AllScripts.Select(scr => scr.Sql)); if (string.IsNullOrEmpty(ddl)) { ddl = "-- (No changes detected)"; } var text = string.Format(header, DateTime.Now.ToString("s"), _config.ConnectionString, "(unknown)", Environment.MachineName) + ddl; File.WriteAllText(_config.OutputPath, text); _feedback.WriteLine(" Generated {0} scripts.", upgrades.AllScripts.Count); _feedback.WriteLine(" DDL scripts are saved to '{0}'", _config.OutputPath); return(true); }
protected override IEnumerable <GameObject> CreateObjs() { var delay = TimeSpan.FromMilliseconds(800); var log = new BufferedLog { BufferDuration = delay }; var presenter = new UIBattlePresenter(log, AddObj); var targetting = new BattleTargetSelection(); yield return(Entity.Create("Battle UI Presenter") .Add(presenter)); yield return(Entity.Create("Battle Background", new Transform2 { Location = new Vector2(0, -100), Size = new Size2(1600, 1228), ZIndex = BackgroundLayer }) .Add((o, r) => new Texture(r.LoadTexture("Battle/tek-orange-room.jpg", o)))); yield return(Entity.Create("Battle Log", new Transform2 { Location = new Vector2(150, 50), Size = new Size2(1300, 50), ZIndex = CombatLogLayer }) .Add((o, r) => new Texture(r.CreateRectangle(Color.DarkBlue, o))) .Add((o, r) => new BorderTexture(r.CreateRectangle(Color.AntiqueWhite, o))) .Add(log) .Add(new TextDisplay { Text = () => log.Lines.Last() })); var char1Battle = BattleCharacter.Create(BattleSide.Gamer, Samples.CreateElectrician()); var heroDisplay = CharacterDisplay.Create(char1Battle, "Heroes/gareth.png", new Vector2(1200, 350), targetting); yield return(heroDisplay); var enemy1Battle = BattleCharacter.Create(BattleSide.Enemy, Enemy.CreateLaserDrone()); yield return(CharacterDisplay.Create(enemy1Battle, "Enemies/drone1.png", new Vector2(200, 350), targetting)); BattlePresenter.Instance = presenter; BattleLog.Instance = log; var battle = Battle.Create(new BattleCardSelectionPresenter(AddObj, targetting), new AIPlayer(), char1Battle, enemy1Battle); yield return(Entity.Create("Current Battle") .Add(new CurrentBattle { Battle = battle })); }
public static List <DbUpgradeScript> CompareDatabaseSchemas(DbFirstConfig config, Type modelType) { var entApp = Activator.CreateInstance(modelType) as EntityApp; entApp.Init(); // important - do not use DbOptions.AutoIndexForeignKeys - which is recommended for MS SQL, but is not helpful here. // This will create a bunch of extra indexes on FKs in entities schema and result in extra differences with original schema. // We ignore stored procs var dbOptions = config.Driver.GetDefaultOptions() & ~DbOptions.AutoIndexForeignKeys; var dbSettings = new DbSettings(config.Driver, dbOptions, config.ConnectionString, upgradeMode: DbUpgradeMode.Always, upgradeOptions: DbUpgradeOptions.UpdateTables | DbUpgradeOptions.UpdateIndexes ); //dbSettings.SetSchemas(config.Schemas); var log = new BufferedLog(); var dbModelBuilder = new DbModelBuilder(entApp.Model, dbSettings.ModelConfig, log); var dbModel = dbModelBuilder.Build(); var db = new Database(dbModel, dbSettings); var ds = new DataSource("main", db); var upgradeMgr = new DbUpgradeManager(db, log); var upgradeInfo = upgradeMgr.BuildUpgradeInfo(); return(upgradeInfo.AllScripts); }