public void Test(string context) { SqlServerTools.ResolveSqlTypes(""); using (var conn = new DataConnection(context)) { var sp = conn.DataProvider.GetSchemaProvider(); var dbSchema = sp.GetSchema(conn); dbSchema.Tables.ToDictionary( t => t.IsDefaultSchema ? t.TableName : t.SchemaName + "." + t.TableName, t => t.Columns.ToDictionary(c => c.ColumnName)); var table = dbSchema.Tables.SingleOrDefault(t => t.TableName.ToLower() == "parent"); Assert.That(table, Is.Not.Null); Assert.That(table.Columns.Count, Is.EqualTo(2)); // Assert.That(dbSchema.Tables.Single(t => t.TableName.ToLower() == "doctor").ForeignKeys.Count, Is.EqualTo(1)); switch (context) { case ProviderName.SqlServer2000: case ProviderName.SqlServer2005: case ProviderName.SqlServer2008: case ProviderName.SqlServer2012: var indexTable = dbSchema.Tables.Single(t => t.TableName == "IndexTable"); Assert.That(indexTable.ForeignKeys.Count, Is.EqualTo(1)); Assert.That(indexTable.ForeignKeys[0].ThisColumns.Count, Is.EqualTo(2)); break; } } }
public void Test(string context) { SqlServerTools.ResolveSqlTypes(""); using (var conn = new DataConnection(context)) { var sp = conn.DataProvider.GetSchemaProvider(); var dbSchema = sp.GetSchema(conn); var tableNames = new HashSet <string>(); foreach (var schemaTable in dbSchema.Tables) { var tableName = schemaTable.CatalogName + "." + (schemaTable.IsDefaultSchema ? schemaTable.TableName : schemaTable.SchemaName + "." + schemaTable.TableName); if (tableNames.Contains(tableName)) { Assert.Fail("Not unique table " + tableName); } tableNames.Add(tableName); var columnNames = new HashSet <string>(); foreach (var schemaColumm in schemaTable.Columns) { if (columnNames.Contains(schemaColumm.ColumnName)) { Assert.Fail("Not unique column {0} for table {1}.{2}", schemaColumm.ColumnName, schemaTable.SchemaName, schemaTable.TableName); } columnNames.Add(schemaColumm.ColumnName); } } var table = dbSchema.Tables.SingleOrDefault(t => t.TableName.ToLower() == "parent"); Assert.That(table, Is.Not.Null); Assert.That(table.Columns.Count(c => c.ColumnName != "_ID"), Is.EqualTo(2)); AssertType <Model.LinqDataTypes>(conn.MappingSchema, dbSchema); AssertType <Model.Parent>(conn.MappingSchema, dbSchema); // Assert.That(dbSchema.Tables.Single(t => t.TableName.ToLower() == "doctor").ForeignKeys.Count, Is.EqualTo(1)); } }
public void Test(string context) { SqlServerTools.ResolveSqlTypes(""); using (var conn = new DataConnection(context)) { var sp = conn.DataProvider.GetSchemaProvider(); var dbSchema = sp.GetSchema(conn); var tableNames = new HashSet <string>(); foreach (var schemaTable in dbSchema.Tables) { var tableName = schemaTable.CatalogName + "." + (schemaTable.IsDefaultSchema ? schemaTable.TableName : schemaTable.SchemaName + "." + schemaTable.TableName); if (tableNames.Contains(tableName)) { Assert.Fail("Not unique table " + tableName); } tableNames.Add(tableName); var columnNames = new HashSet <string>(); foreach (var schemaColumm in schemaTable.Columns) { if (columnNames.Contains(schemaColumm.ColumnName)) { Assert.Fail("Not unique column {0} for table {1}.{2}", schemaColumm.ColumnName, schemaTable.SchemaName, schemaTable.TableName); } columnNames.Add(schemaColumm.ColumnName); } } var table = dbSchema.Tables.SingleOrDefault(t => t.TableName.ToLower() == "parent"); Assert.That(table, Is.Not.Null); Assert.That(table.Columns.Count(c => c.ColumnName != "_ID"), Is.EqualTo(2)); AssertType <Model.LinqDataTypes>(conn.MappingSchema, dbSchema); AssertType <Model.Parent> (conn.MappingSchema, dbSchema); Assert.That(dbSchema.Tables.Single(t => t.TableName.ToLower() == "doctor").ForeignKeys.Count, Is.EqualTo(1)); switch (context) { case ProviderName.SqlServer2000: case ProviderName.SqlServer2005: case ProviderName.SqlServer2008: case ProviderName.SqlServer2012: case ProviderName.SqlServer2014: case TestProvName.SqlAzure: { var indexTable = dbSchema.Tables.Single(t => t.TableName == "IndexTable"); Assert.That(indexTable.ForeignKeys.Count, Is.EqualTo(1)); Assert.That(indexTable.ForeignKeys[0].ThisColumns.Count, Is.EqualTo(2)); } break; case ProviderName.Informix: { var indexTable = dbSchema.Tables.First(t => t.TableName == "testunique"); Assert.That(indexTable.Columns.Count(c => c.IsPrimaryKey), Is.EqualTo(2)); Assert.That(indexTable.ForeignKeys.Count(), Is.EqualTo(2)); } break; } switch (context) { case ProviderName.SqlServer2008: case ProviderName.SqlServer2012: case ProviderName.SqlServer2014: case TestProvName.SqlAzure: { var tbl = dbSchema.Tables.Single(at => at.TableName == "AllTypes"); var col = tbl.Columns.First(c => c.ColumnName == "datetimeoffset3DataType"); Assert.That(col.DataType, Is.EqualTo(DataType.DateTimeOffset)); Assert.That(col.Length, Is.Null); Assert.That(col.Precision, Is.EqualTo(3)); Assert.That(col.Scale, Is.Null); } break; } } }
public void Test(string context) { SqlServerTools.ResolveSqlTypes(""); using (var conn = new DataConnection(context)) { var sp = conn.DataProvider.GetSchemaProvider(); var dbSchema = sp.GetSchema(conn); dbSchema.Tables.ToDictionary( t => t.IsDefaultSchema ? t.TableName : t.SchemaName + "." + t.TableName, t => t.Columns.ToDictionary(c => c.ColumnName)); var table = dbSchema.Tables.SingleOrDefault(t => t.TableName.ToLower() == "parent"); Assert.That(table, Is.Not.Null); Assert.That(table.Columns.Count(c => c.ColumnName != "_ID"), Is.EqualTo(2)); // Assert.That(dbSchema.Tables.Single(t => t.TableName.ToLower() == "doctor").ForeignKeys.Count, Is.EqualTo(1)); switch (context) { case ProviderName.SqlServer2000: case ProviderName.SqlServer2005: case ProviderName.SqlServer2008: case ProviderName.SqlServer2012: case ProviderName.SqlServer2014: case "SqlAzure.2012": { var indexTable = dbSchema.Tables.Single(t => t.TableName == "IndexTable"); Assert.That(indexTable.ForeignKeys.Count, Is.EqualTo(1)); Assert.That(indexTable.ForeignKeys[0].ThisColumns.Count, Is.EqualTo(2)); } break; case ProviderName.Informix: { var indexTable = dbSchema.Tables.First(t => t.TableName == "testunique"); Assert.That(indexTable.Columns.Count(c => c.IsPrimaryKey), Is.EqualTo(2)); Assert.That(indexTable.ForeignKeys.Count(), Is.EqualTo(2)); } break; } switch (context) { case ProviderName.SqlServer2008: case ProviderName.SqlServer2012: case ProviderName.SqlServer2014: case "SqlAzure.2012": { var tbl = dbSchema.Tables.Single(at => at.TableName == "AllTypes"); var col = tbl.Columns.First(c => c.ColumnName == "datetimeoffset3DataType"); Assert.That(col.DataType, Is.EqualTo(DataType.DateTimeOffset)); Assert.That(col.Length, Is.Null); Assert.That(col.Precision, Is.EqualTo(3)); Assert.That(col.Scale, Is.Null); } break; } } }