コード例 #1
0
        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;
                }
            }
        }
コード例 #2
0
        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));
            }
        }
コード例 #3
0
        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;
                }
            }
        }
コード例 #4
0
ファイル: SchemaProviderTest.cs プロジェクト: hugoaa/linq2db
        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;
                }
            }
        }