public void TestCreateTableQuery() { var types = FluentConfiguration.Start().DefaultIdProperty(IdentityField).DefaultDiscriminatorColumnName(DefaultDiscriminator).AddType<BaseClass>(z => z.AllProperties()).GenerateTypeMappings(); var provider = new TestProvider(types); var queryBuilder = new QueryBuilder(provider); var result = queryBuilder.GetCreateTable(typeof(BaseClass)); Assert.AreEqual("CREATE TABLE [BaseClass] ([ObjectId] UNIQUEIDENTIFIER NOT NULL PRIMARY KEY, [_dscr] INT NOT NULL, [Prop1] INT NOT NULL);", result); }
public void Test() { var mappings = FluentConfiguration.Start().DefaultDiscriminatorColumnName("_dscr") .DefaultIdProperty(IdentityField) .AddTypeAuto<FirstClass>() .AddTypeAuto<SecondClass>() .AddTypeAuto<ThirdClass>().GenerateTypeMappings(); var provider = new TestProvider(mappings); var queryBuilder = new QueryBuilder(provider); var createTable = SqlConnection.CreateCommand(); createTable.CommandText = string.Concat( queryBuilder.GetCreateTable(typeof(FirstClass)), queryBuilder.GetCreateTable(typeof(SecondClass)), queryBuilder.GetCreateTable(typeof(ThirdClass)) ); createTable.ExecuteNonQuery(); var thirdGuids = LoadTable("ThirdClass", (row, i) => { }); var secondGuids = LoadTable("SecondClass", (row, i) => { row["Third"] = thirdGuids[i]; }); LoadTable("FirstClass", (row, i) => { row["Second"] = secondGuids[i]; }); var stopWatch = new Stopwatch(); stopWatch.Start(); var plan = queryBuilder.GetQuery("FirstClass", new string[0], new[] { "Second.Third" }); Debug.WriteLine(plan.SqlString); var mapper = new SqlValueMapper(); var firstClasses = new List<FirstClass>(Count); using (var cmd = new SqlCommand(plan.SqlString, SqlConnection)) { using (var reader = cmd.ExecuteReader()) { firstClasses.AddRange(mapper.MapFromReader(reader, plan.SelectClause).OfType<FirstClass>()); } } stopWatch.Stop(); Assert.AreEqual(Count, firstClasses.Count(z => z.Second != null && z.Second.Third != null)); Assert.Pass(stopWatch.Elapsed.ToString()); }
public void TestCreateTableWithArray() { var types = FluentConfiguration.Start().DefaultIdProperty(IdentityField).DefaultDiscriminatorColumnName(DefaultDiscriminator) .AddType<ClassWithIntArr>(z => z.AllProperties()).GenerateTypeMappings(); var provider = new TestProvider(types); var queryBuilder = new QueryBuilder(provider); var result = queryBuilder.GetCreateTable(typeof(ClassWithIntArr)); Assert.AreEqual("CREATE TABLE [ClassWithIntArr] ([ObjectId] UNIQUEIDENTIFIER NOT NULL PRIMARY KEY, [_dscr] INT NOT NULL);\n" +"CREATE TABLE [ClassWithIntArr_Arr] ([ParentId] UNIQUEIDENTIFIER NOT NULL, [Value] INT NOT NULL, [Index] BIGINT NOT NULL);", result); }