public NewInstallStep(HttpContextBase http, IUserService userService, DatabaseBuilder databaseBuilder, IGlobalSettings globalSettings) { _http = http; _userService = userService; _databaseBuilder = databaseBuilder; _globalSettings = globalSettings; }
public NewInstallStep( IUserService userService, DatabaseBuilder databaseBuilder, IHttpClientFactory httpClientFactory, IOptions <UserPasswordConfigurationSettings> passwordConfiguration, IOptions <SecuritySettings> securitySettings, IOptionsMonitor <ConnectionStrings> connectionStrings, ICookieManager cookieManager, IBackOfficeUserManager userManager, IDbProviderFactoryCreator dbProviderFactoryCreator, IEnumerable <IDatabaseProviderMetadata> databaseProviderMetadata, ILocalizedTextService localizedTextService, IMetricsConsentService metricsConsentService) { _userService = userService ?? throw new ArgumentNullException(nameof(userService)); _databaseBuilder = databaseBuilder ?? throw new ArgumentNullException(nameof(databaseBuilder)); _httpClientFactory = httpClientFactory; _passwordConfiguration = passwordConfiguration.Value ?? throw new ArgumentNullException(nameof(passwordConfiguration)); _securitySettings = securitySettings.Value ?? throw new ArgumentNullException(nameof(securitySettings)); _connectionStrings = connectionStrings; _cookieManager = cookieManager; _userManager = userManager ?? throw new ArgumentNullException(nameof(userManager)); _dbProviderFactoryCreator = dbProviderFactoryCreator ?? throw new ArgumentNullException(nameof(dbProviderFactoryCreator)); _databaseProviderMetadata = databaseProviderMetadata; _localizedTextService = localizedTextService; _metricsConsentService = metricsConsentService; }
private static void BuildMasterData() { try { CompositeResolver.RegisterAndSetAsDefault(new [] { MasterMemoryResolver.Instance, GeneratedResolver.Instance, StandardResolver.Instance }); } catch { } var builder = new DatabaseBuilder(); builder = BuildParson(builder); builder = BuildSkill(builder); builder = BuildSkillParameter(builder); byte[] data = builder.Build(); var resourcesDir = $"{Application.dataPath}/Resources"; Directory.CreateDirectory(resourcesDir); var filename = "/master-data.bytes"; using (var fs = new FileStream(resourcesDir + filename, FileMode.Create)) { fs.Write(data, 0, data.Length); } Debug.Log($"Write byte[] to: {resourcesDir + filename}"); AssetDatabase.Refresh(); }
public Migrator( [NotNull] DbContextConfiguration contextConfiguration, [NotNull] HistoryRepository historyRepository, [NotNull] MigrationAssembly migrationAssembly, [NotNull] DatabaseBuilder databaseBuilder, [NotNull] IMigrationOperationSqlGeneratorFactory ddlSqlGeneratorFactory, [NotNull] SqlGenerator dmlSqlGenerator, [NotNull] SqlStatementExecutor sqlExecutor) { Check.NotNull(contextConfiguration, "contextConfiguration"); Check.NotNull(historyRepository, "historyRepository"); Check.NotNull(migrationAssembly, "migrationAssembly"); Check.NotNull(databaseBuilder, "databaseBuilder"); Check.NotNull(ddlSqlGeneratorFactory, "ddlSqlGeneratorFactory"); Check.NotNull(dmlSqlGenerator, "dmlSqlGenerator"); Check.NotNull(sqlExecutor, "sqlExecutor"); _contextConfiguration = contextConfiguration; _historyRepository = historyRepository; _migrationAssembly = migrationAssembly; _databaseBuilder = databaseBuilder; _ddlSqlGeneratorFactory = ddlSqlGeneratorFactory; _dmlSqlGenerator = dmlSqlGenerator; _sqlExecutor = sqlExecutor; }
public void Columns_are_ordered_by_name_with_pk_columns_first_and_fk_columns_last() { var modelBuider = new BasicModelBuilder(); modelBuider.Entity("A", b => { b.Property <int>("Px"); b.Property <int>("Py"); b.Key("Px", "Py"); }); modelBuider.Entity("B", b => { b.Property <int>("P6"); b.Property <int>("P5"); b.Property <int>("P4"); b.Property <int>("P3"); b.Property <int>("P2"); b.Property <int>("P1"); b.Key("P5", "P2"); b.ForeignKey("A", "P6", "P4"); b.ForeignKey("A", "P4", "P5"); }); var databaseModel = new DatabaseBuilder().GetDatabase(modelBuider.Model); Assert.Equal(2, databaseModel.Tables.Count); Assert.Equal(new[] { "Px", "Py" }, databaseModel.Tables[0].Columns.Select(c => c.Name)); Assert.Equal(new[] { "P5", "P2", "P1", "P3", "P6", "P4" }, databaseModel.Tables[1].Columns.Select(c => c.Name)); }
public void Print() { foreach (var pair in _itemCostByItemLevel.OrderBy(i => i.Key)) { DatabaseBuilder.PrintLine($"ilvl: {pair.Key}, cost: {pair.Value.Cost}, item: {pair.Value.Item.en.name}"); } }
public SilentUpgradeComponent(IRuntimeState runtimeState, IGlobalSettings settings, IProfilingLogger logger, IUmbracoDatabaseFactory databaseFactory, DatabaseBuilder databaseBuilder) { this.runtimeState = runtimeState; this.globalSettings = settings; this.logger = logger; this.databaseFactory = databaseFactory; this.databaseBuilder = databaseBuilder; // Check to see if Silent Upgrade is on in web.config // <add key="SilientUpgrade" value="true" /> var silentUpgrade = ConfigurationManager.AppSettings["SilentUpgrade"].TryConvertTo <bool>(); if (silentUpgrade.Success && silentUpgrade.Result) { logger.Info <SilentUpgradeComposer>("SilentUpgrade is On"); SilentUpgradeOn = true; // we only need to worry about the request when we are on. UmbracoModule.EndRequest += UmbracoModule_EndRequest; } else { logger.Info <SilentUpgradeComposer>("SilentUpgrade is Off"); } }
void WriteFiles() { var writing = Stopwatch.StartNew(); var dataUpdate = new UpdatePackage("data"); var jsout = new JsOutput(dataUpdate); jsout.Write(); // Has to be after everything else because partials are modified here. var searchUpdate = new UpdatePackage("search"); var sqlout = new SearchOutput(jsout, searchUpdate); sqlout.Write(); if (dataUpdate.RowCount > 0) { DatabaseBuilder.PrintLine($"Updating {dataUpdate.RowCount} data rows."); dataUpdate.Write(); } if (searchUpdate.RowCount > 0) { DatabaseBuilder.PrintLine($"Updating {searchUpdate.RowCount} data rows."); searchUpdate.Write(); } writing.Stop(); DatabaseBuilder.PrintLine($"Writing elapsed: {writing.Elapsed}"); }
public async Task CreateContainerAsync_PostgreSql_HelloWorld() { DatabaseContainer container = null; try { container = await DatabaseBuilder.CreateContainerAsync(DatabaseType.PostgreSql); var connection = await container.CreateConnectionAsync <Npgsql.NpgsqlConnection>(); using (var cmd = connection.CreateCommand()) { cmd.CommandText = "select 'Hello World!'"; var msg = await cmd.ExecuteScalarAsync(); Assert.That(msg, Is.EqualTo("Hello World!")); } } finally { if (container != null) { await container.StopAsync(); } } }
dynamic BuildSupplementalCoffer(dynamic instance, dynamic jCoffer) { dynamic coffer = new JObject(); var cofferItems = new JArray(); coffer.items = cofferItems; foreach (dynamic jTreasureItem in jCoffer.items as JArray) { if (_builder.Db.ItemsByName.TryGetValue( SanitizeItemName(jTreasureItem.Value), out dynamic item)) { cofferItems.Add(item.id); BuildItemRelationship(item, instance, true); } else { DatabaseBuilder.PrintLine($"Item named {jTreasureItem.Value} not found."); continue; } } if (jCoffer.coords != null) { var coords = new JArray(); coffer.coords = coords; coords.Add(jCoffer.coords.x); coords.Add(jCoffer.coords.y); } return(coffer); }
List <JsPartial> GetPartials(object source, string lang, bool isNestedOnly) { if (!_db.DataReferencesBySource.TryGetValue(source, out var list)) { return(null); } var partials = new List <JsPartial>(); foreach (var dataRef in list) { if (isNestedOnly && !dataRef.IsNested) { continue; } try { dynamic obj = _partialsByLangTypeById[Tuple.Create(lang, dataRef.Type)][dataRef.Id]; if (IsPartialObjectSkipped(dataRef, obj)) { continue; } var partial = new JsPartial(dataRef.Type, dataRef.Id, obj); partials.Add(partial); } catch (KeyNotFoundException ignored) { DatabaseBuilder.PrintLine($"Couldn't find Partial of type '{dataRef.Type}' with ID '{dataRef.Id}'."); } } return(partials); }
public void Build_fills_in_names_if_StorageName_not_specified() { // TODO: Add and Index when supported by DatabaseBuilder. var modelBuilder = new ModelBuilder(); modelBuilder.Entity <Blog>() .Key(k => k.BlogId) .Properties(p => p.Property(e => e.BlogId)); modelBuilder.Entity <Post>() .Key(k => k.PostId) .Properties(p => { p.Property(e => e.PostId); p.Property(e => e.BelongsToBlogId); }) .ForeignKeys(f => f.ForeignKey <Blog>(p => p.BelongsToBlogId)); var database = new DatabaseBuilder().GetDatabase(modelBuilder.Model); Assert.True(database.Tables.Any(t => t.Name == "Blog")); Assert.True(database.Tables.Any(t => t.Name == "Post")); Assert.Equal("BlogId", database.GetTable("Blog").Columns.Single().Name); Assert.Equal("PostId", database.GetTable("Post").Columns[1].Name); Assert.Equal("BelongsToBlogId", database.GetTable("Post").Columns[0].Name); Assert.Equal("PK_Blog", database.GetTable("Blog").PrimaryKey.Name); Assert.Equal("PK_Post", database.GetTable("Post").PrimaryKey.Name); Assert.Equal("FK_Post_Blog_BelongsToBlogId", database.GetTable("Post").ForeignKeys.Single().Name); }
public override void Start() { foreach (var sJob in _builder.Sheet <Saint.ClassJob>()) { var name = sJob.Name.ToString(); if (string.IsNullOrEmpty(name)) { DatabaseBuilder.PrintLine($"Skipping unreleased job {sJob.Key}!"); continue; } dynamic job = new JObject(); job.id = sJob.Key; job.abbreviation = sJob.Abbreviation.ToString(); job.name = Utils.CapitalizeWords(name); job.category = sJob.ClassJobCategory.Name.ToString(); job.startingLevel = sJob.StartingLevel; if (sJob.SoulCrystal != null && sJob.SoulCrystal.Key != 0) { job.isJob = 1; } var iconPath = JobIconPath + sJob.Abbreviation.ToString() + ".png"; if (!File.Exists(iconPath)) { var icon = sJob.Icon.GetImage(); icon.Save(iconPath, System.Drawing.Imaging.ImageFormat.Png); } _builder.Db.Jobs.Add(job); } }
public NewInstallStep( IUserService userService, DatabaseBuilder databaseBuilder, IHttpClientFactory httpClientFactory, IOptions <UserPasswordConfigurationSettings> passwordConfiguration, IOptions <SecuritySettings> securitySettings, IOptionsMonitor <ConnectionStrings> connectionStrings, ICookieManager cookieManager, IBackOfficeUserManager userManager, IDbProviderFactoryCreator dbProviderFactoryCreator, IEnumerable <IDatabaseProviderMetadata> databaseProviderMetadata) : this( userService, databaseBuilder, httpClientFactory, passwordConfiguration, securitySettings, connectionStrings, cookieManager, userManager, dbProviderFactoryCreator, databaseProviderMetadata, StaticServiceProvider.Instance.GetRequiredService <ILocalizedTextService>(), StaticServiceProvider.Instance.GetRequiredService <IMetricsConsentService>()) { }
public static void Calculate(DatabaseBuilder builder, ItemSourceComplexity complexity) { var rareItemsById = builder.Db.Items .Where(i => i.craft == null) .Where(i => ((JToken)i.id).Type == JTokenType.Integer) .Where(i => complexity.GetNqComplexity((int)i.id) >= 80) .ToDictionary(i => (int)i.id); var candidateItems = builder.Db.Items .Where(i => i.craft != null) .Where(i => i.desynthSkill != null) .Where(i => ((JToken)i.id).Type == JTokenType.Integer) .Where(i => complexity.GetNqComplexity((int)i.id) <= 75); var lines = new List <string>(); foreach (var item in candidateItems) { foreach (var recipe in item.craft) { foreach (var ingredient in recipe.ingredients) { if (rareItemsById.TryGetValue((int)ingredient.id, out var rareIngredientItem)) { lines.Add($"{rareIngredientItem.en.name} appears in recipe list of {item.en.name}."); } } } } File.WriteAllLines("rare-desynth.txt", lines); }
private static InversionContainer build_items_for_container(ConfigurationPropertyHolder configuration_property_holder) { configuration_property_holder.DatabaseType = DatabaseTypeSynonyms.convert_database_type_synonyms(configuration_property_holder.DatabaseType); set_up_current_mappings(configuration_property_holder); Logger multiLogger = GetMultiLogger(configuration_property_holder); var container = new StructureMap.Container(cfg => { cfg.For <ConfigurationPropertyHolder>().Singleton().Use(configuration_property_holder); cfg.For <FileSystemAccess>().Singleton().Use(context => new DotNetFileSystemAccess(configuration_property_holder)); cfg.For <Database>().Singleton().Use(context => DatabaseBuilder.build(context.GetInstance <FileSystemAccess>(), configuration_property_holder)); cfg.For <KnownFolders>().Singleton().Use(context => KnownFoldersBuilder.build(context.GetInstance <FileSystemAccess>(), configuration_property_holder)); cfg.For <LogFactory>().Singleton().Use <MultipleLoggerLogFactory>(); //cfg.For<Logger>().Singleton().Use(context => LogBuilder.build(context.GetInstance<FileSystemAccess>(), configuration_property_holder)); cfg.For <Logger>().Use(multiLogger); cfg.For <CryptographicService>().Singleton().Use <MD5CryptographicService>(); cfg.For <DatabaseMigrator>().Singleton().Use(context => new DefaultDatabaseMigrator(context.GetInstance <Database>(), context.GetInstance <CryptographicService>(), configuration_property_holder)); cfg.For <VersionResolver>().Singleton().Use( context => VersionResolverBuilder.build(context.GetInstance <FileSystemAccess>(), configuration_property_holder)); cfg.For <EnvironmentSet>().Singleton().Use(new DefaultEnvironmentSet(configuration_property_holder)); cfg.For <Initializer>().Singleton().Use <FileSystemInitializer>(); }); // forcing a build of database to initialize connections so we can be sure server/database have values Database database = container.GetInstance <Database>(); database.initialize_connections(configuration_property_holder); configuration_property_holder.ServerName = database.server_name; configuration_property_holder.DatabaseName = database.database_name; configuration_property_holder.ConnectionString = database.connection_string; return(new StructureMapContainer(container)); }
public static void Build() { try { MessagePackResolver.SetupMessagePackResolver(); } catch { // ignored } var builder = new DatabaseBuilder(); builder = BuildParson(builder); builder = BuildSkill(builder); builder = BuildSkillParameter(builder); byte[] data = builder.Build(); string resourcesDir = $"{Application.dataPath}/Resources/"; string fileName = MasterDataDb.MASTER_RESOURCE_PATH + ".bytes"; Directory.CreateDirectory(resourcesDir); using (var fs = new FileStream(resourcesDir + fileName, FileMode.Create)) { fs.Write(data, 0, data.Length); } Debug.Log($"Write byte[] to: {resourcesDir + fileName}"); AssetDatabase.Refresh(); }
protected virtual IReadOnlyList <SqlStatement> GenerateUpdateDatabaseSql( IReadOnlyList <IMigrationMetadata> downgradeMigrations, IReadOnlyList <IMigrationMetadata> upgradeMigrations) { var sqlStatements = new List <SqlStatement>(); foreach (var migration in downgradeMigrations) { var database = DatabaseBuilder.GetDatabase(migration.TargetModel); var ddlSqlGenerator = DdlSqlGeneratorFactory.Create(database); sqlStatements.AddRange( ddlSqlGenerator.Generate( migration.DowngradeOperations, generateIdempotentSql: true)); sqlStatements.AddRange( HistoryRepository.GenerateDeleteMigrationSql(migration, DmlSqlGenerator)); } foreach (var migration in upgradeMigrations) { var database = DatabaseBuilder.GetDatabase(migration.TargetModel); var ddlSqlGenerator = DdlSqlGeneratorFactory.Create(database); sqlStatements.AddRange( ddlSqlGenerator.Generate( migration.UpgradeOperations, generateIdempotentSql: true)); sqlStatements.AddRange( HistoryRepository.GenerateInsertMigrationSql(migration, DmlSqlGenerator)); } return(sqlStatements); }
//protected WebProxy Proxy = false ? new WebProxy("127.0.0.1", 8081) : null; //127.0.0.1:8081 //8888 public virtual Database CreateDatabase() { string env = Environment.GetEnvironmentVariable("DB"); if (!string.IsNullOrWhiteSpace(env)) { if (!env.StartsWith("http://")) { env = $"http://{env}"; } if (!env.EndsWith(":5984")) { env = $"{env}:5984"; } Console.WriteLine("using env conn " + env); DbLocation = env; } var conn = new Connection(DbLocation); //conn.SetupConfig(cfg => cfg.Proxy = Proxy); //conn.Authentication = new BasicAuthentication("admin", "abc123!!"); return(DatabaseBuilder.Create(DbName, conn) .SetLogger(new Logger()) .Build()); //return new Database(DbName, conn); }
public void WorksIGuess() { // using (var fs = File.Open("copy.db", FileMode.OpenOrCreate)) using (var ms = new MemoryStream()) { using (var db = new DatabaseBuilder() .UseIODatabase(builder => builder.UseStringDB(StringDBVersion.v5_0_0, ms, true)) .WithTransform(StringTransformer.Default, StringTransformer.Default)) { db.Insert("test", "value"); db.InsertRange(new KeyValuePair <string, string>[] { new KeyValuePair <string, string>("a,", "c,"), new KeyValuePair <string, string>("b,", "d,"), }); db.EnumerateAggressively(2) .Should() .BeEquivalentTo ( new KeyValuePair <string, string>[] { new KeyValuePair <string, string>("test", "value"), new KeyValuePair <string, string>("a,", "c,"), new KeyValuePair <string, string>("b,", "d,"), } ); } ms.Seek(0, SeekOrigin.Begin); // ms.CopyTo(fs); } }
private static MemoryDatabase BuildLargeCacheSet() { var builder = new DatabaseBuilder(); // the file contains 1 million password blacklist entries var passwordEntries = File.ReadAllLines("Cache\\Mocks\\passwordblacklist.txt"); var passwordBlacklist = passwordEntries.Select(entry => new PasswordBlacklist { Value = entry }).ToList(); var random = new Random(); // build a search list by picking one million random values _searchList = new List <PasswordBlacklist>(); for (var i = 0; i <= SearchListCount; i++) { var index = random.Next(1, SearchListCount - 10); var entry = passwordBlacklist[index]; _searchList.Add(entry); } builder.Append(passwordBlacklist); var data = builder.Build(); return(new MemoryDatabase(data)); }
public override bool Execute() { // Load the certificate X509Certificate2 certificate = new X509Certificate2(CertificateFile, CertificatePassword); if (!certificate.HasPrivateKey) { Log.LogError("Input certificate must have a private key"); return(false); } // Build regex filters List <FileFilter> excludeFilters = BuildFileFiltersList(ExcludePatterns); List <FileFilter> includeFilters = BuildFileFiltersList(IncludePatterns); // Build reporter ProgressReporter reporter = new MsBuildLogReporter(Log); // Build the database DatabaseBuildResult result = DatabaseBuilder.BuildDatabase(OutputFile, EmbedCertificate, InputDirectory, excludeFilters, includeFilters, certificate, reporter); return(result.Succeeded); }
void ExportOrchestrionMusic(int orchestrionId, dynamic orchestrion) { // Skip if the file is already exported. var targetFileName = Path.Combine(_resultMusicPath, orchestrionId + ".ogg"); if (File.Exists(targetFileName)) { return; } var sOrchestrionPaths = _builder.Sheet("OrchestrionPath"); var sPath = sOrchestrionPaths[orchestrionId]; var filePath = sPath.AsString("File").ToString(); if (!_builder.Realm.Packs.TryGetFile(filePath, out var sFile)) { return; } var sScdFile = new SaintCoinach.Sound.ScdFile(sFile); if (!ExportClip(sScdFile, targetFileName)) { DatabaseBuilder.PrintLine($"No SCD headers for orchestrion #{orchestrionId} {orchestrion.name}"); } }
public void Calibrate() { List <Saint.Item> ItemsToImport = _realm.GameData.GetSheet <Saint.Item>() .Where(i => !Hacks.IsItemSkipped(i.Name, i.Key)).ToList(); DatabaseBuilder.PrintLine("Reading icon definition... (1/5)"); ReadIconDefinition(ItemsToImport); DatabaseBuilder.PrintLine("Preparing working directory... (2/5)"); PrepareDirectory(); if (_config.Reextract) { DatabaseBuilder.PrintLine("Extracting in game icons... (3/5)"); ExtractIcons(ItemsToImport); } DatabaseBuilder.PrintLine("Adjusting 128x icon... (4/5)"); Move128Icons(); DatabaseBuilder.PrintLine("Writing icon definition... (5/5)"); WriteIconDefinition(); //Cleanup(); DatabaseBuilder.PrintLine("Icon calibration done. \n" + "Please re-export the database to bind icon to json."); }
public static DatabaseModel ProvideModel(DatabaseBuilder <SimpleDatabase> databaseBuilder) { return(databaseBuilder.Database(nameof(SimpleDatabase)) .Table(d => d.Table(t => t.Users) .Column(t => t.UserId, SqlType.Int) .Build()) .Build()); }
public InstallApiController(DatabaseBuilder databaseBuilder, IProfilingLogger proflog, InstallHelper installHelper, InstallStepCollection installSteps) { _databaseBuilder = databaseBuilder ?? throw new ArgumentNullException(nameof(databaseBuilder)); _proflog = proflog ?? throw new ArgumentNullException(nameof(proflog)); _installSteps = installSteps; InstallHelper = installHelper; _logger = _proflog; }
public InstallHelper( IUmbracoContextAccessor umbracoContextAccessor, DatabaseBuilder databaseBuilder, ILogger logger, IGlobalSettings globalSettings) : this(umbracoContextAccessor, databaseBuilder, logger, globalSettings, Current.Factory.GetInstance <IInstallationService>()) { }
static void WriteCore(string fullPath, string hashPath, string contents) { if (NeedsUpdate(hashPath, contents)) { DatabaseBuilder.PrintLine($"Writing {fullPath}"); File.WriteAllText(fullPath, contents, Encoding.UTF8); } }
static void Main(string[] args) { DatabaseBuilder builder = new DatabaseBuilder(); IApi controller = new ApiController(builder); View view = new View(controller); view.Interactive(); }
public InstallHelper(IUmbracoContextAccessor umbracoContextAccessor, DatabaseBuilder databaseBuilder, ILogger logger, IGlobalSettings globalSettings) { _httpContext = umbracoContextAccessor.UmbracoContext.HttpContext; _logger = logger; _globalSettings = globalSettings; _databaseBuilder = databaseBuilder; }
public void Build_creates_database() { var database = new DatabaseBuilder().GetDatabase(CreateModel()); Assert.NotNull(database); Assert.Equal(2, database.Tables.Count); var table0 = database.Tables[0]; var table1 = database.Tables[1]; Assert.Equal("dbo.MyTable0", table0.Name); Assert.Equal(1, table0.Columns.Count); Assert.Equal("Id", table0.Columns[0].Name); Assert.Equal("int", table0.Columns[0].DataType); Assert.Equal(ValueGenerationOnSave.None, table0.Columns[0].ValueGenerationStrategy); Assert.NotNull(table1.PrimaryKey.Name); Assert.Equal("MyPK0", table0.PrimaryKey.Name); Assert.Same(table0.Columns[0], table0.PrimaryKey.Columns[0]); Assert.Equal(1, table0.ForeignKeys.Count); Assert.Equal("dbo.MyTable1", table1.Name); Assert.Equal(1, table1.Columns.Count); Assert.Equal("Id", table1.Columns[0].Name); Assert.Equal("int", table1.Columns[0].DataType); Assert.Equal(ValueGenerationOnSave.WhenInserting, table1.Columns[0].ValueGenerationStrategy); Assert.NotNull(table1.PrimaryKey.Name); Assert.Equal("MyPK1", table1.PrimaryKey.Name); Assert.Same(table1.Columns[0], table1.PrimaryKey.Columns[0]); Assert.Equal(0, table1.ForeignKeys.Count); var foreignKey = table0.ForeignKeys[0]; Assert.Equal("MyFK", foreignKey.Name); Assert.Same(table0, foreignKey.Table); Assert.Same(table1, foreignKey.ReferencedTable); Assert.Same(table0.Columns[0], foreignKey.Columns[0]); Assert.Same(table1.Columns[0], foreignKey.ReferencedColumns[0]); Assert.True(foreignKey.CascadeDelete); var index = table0.Indexes[0]; Assert.Equal("MyIndex", index.Name); Assert.Same(table0, index.Table); Assert.Same(table0.Columns[0], index.Columns[0]); Assert.True(index.IsUnique); }
public void Build_fills_in_names_if_StorageName_not_specified() { // TODO: Add and Index when supported by DatabaseBuilder. var modelBuilder = new ModelBuilder(); modelBuilder.Entity<Blog>(b => { b.Key(k => k.BlogId); b.Property(e => e.BlogId); }); modelBuilder.Entity<Post>(b => { b.Key(k => k.PostId); b.Property(e => e.PostId); b.Property(e => e.BelongsToBlogId); b.ForeignKeys(f => f.ForeignKey<Blog>(p => p.BelongsToBlogId)); b.Indexes(ixs => ixs.Index(ix => ix.PostId)); }); var database = new DatabaseBuilder().GetDatabase(modelBuilder.Model); Assert.True(database.Tables.Any(t => t.Name == "Blog")); Assert.True(database.Tables.Any(t => t.Name == "Post")); Assert.Equal("BlogId", database.GetTable("Blog").Columns.Single().Name); Assert.Equal("PostId", database.GetTable("Post").Columns[1].Name); Assert.Equal("BelongsToBlogId", database.GetTable("Post").Columns[0].Name); Assert.Equal("PK_Blog", database.GetTable("Blog").PrimaryKey.Name); Assert.Equal("PK_Post", database.GetTable("Post").PrimaryKey.Name); Assert.Equal("FK_Post_Blog_BelongsToBlogId", database.GetTable("Post").ForeignKeys.Single().Name); Assert.Equal("IX_Post_PostId", database.GetTable("Post").Indexes.Single().Name); }
public void Name_for_multi_column_FKs() { var modelBuilder = new ModelBuilder(); modelBuilder.Entity<Principal>() .Key(k => new { k.Id0, k.Id1 }); modelBuilder.Entity<Dependent>(b => { b.Key(k => k.Id); b.ForeignKeys(f => f.ForeignKey<Principal>(p => new { p.FkAAA, p.FkZZZ })); }); var builder = new DatabaseBuilder(); var name = builder.GetDatabase(modelBuilder.Model).GetTable("Dependent").ForeignKeys.Single().Name; Assert.Equal("FK_Dependent_Principal_FkAAA_FkZZZ", name); }
public void Name_for_multi_column_Indexes() { var modelBuilder = new ModelBuilder(); modelBuilder.Entity<Dependent>(b => { b.Key(e => e.Id); b.Property(e => e.Id); b.Property(e => e.FkAAA).ColumnName("ColumnAaa"); b.Property(e => e.FkZZZ).ColumnName("ColumnZzz"); b.ToTable("MyTable"); b.Indexes(ixs => ixs.Index(e => new { e.FkAAA, e.FkZZZ })); }); var builder = new DatabaseBuilder(); var name = builder.GetDatabase(modelBuilder.Model).GetTable("MyTable").Indexes.Single().Name; Assert.Equal("IX_MyTable_ColumnAaa_ColumnZzz", name); }