public void ResolveSimpleTableInfo()
        {
            var simpleTableInfo = new ResolvedSimpleTableInfo(typeof(DataContextTestClass.Region), "dbo.Region", "t0");

            SqlEntityDefinitionExpression resolvedExpr = _mappingResolver.ResolveSimpleTableInfo(simpleTableInfo, _generator);

            SqlColumnExpression expectedPrimaryColumn     = new SqlColumnDefinitionExpression(typeof(int), simpleTableInfo.TableAlias, "RegionID", true);
            SqlColumnExpression expectedDescriptionColumn =
                new SqlColumnDefinitionExpression(typeof(string), simpleTableInfo.TableAlias, "RegionDescription", false);

            Assert.That(resolvedExpr.Type, Is.SameAs(typeof(DataContextTestClass.Region)));
            Assert.That(resolvedExpr.TableAlias, Is.EqualTo("t0"));
            Assert.That(resolvedExpr.Name, Is.Null);
            SqlExpressionTreeComparer.CheckAreEqualTrees(expectedPrimaryColumn, resolvedExpr.GetIdentityExpression());
            Assert.That(resolvedExpr.Columns, Has.Count.EqualTo(2));
            SqlExpressionTreeComparer.CheckAreEqualTrees(expectedPrimaryColumn, resolvedExpr.Columns[0]);
            SqlExpressionTreeComparer.CheckAreEqualTrees(expectedDescriptionColumn, resolvedExpr.Columns[1]);
        }
        public void ResolveSimpleTableInfo_MultiplePrimaryKeyProperties()
        {
            var simpleTableInfo = new ResolvedSimpleTableInfo(typeof(DataContextTestClass.ClassWithCompoundPrimaryKey), "ClassWithCompoundPrimaryKey", "t0");

            SqlEntityDefinitionExpression resolvedExpr = _mappingResolver.ResolveSimpleTableInfo(simpleTableInfo, _generator);

            SqlColumnExpression expectedPrimaryColumn1 = new SqlColumnDefinitionExpression(typeof(int), simpleTableInfo.TableAlias, "Key1", true);
            SqlColumnExpression expectedPrimaryColumn2 = new SqlColumnDefinitionExpression(typeof(string), simpleTableInfo.TableAlias, "Key2", true);
            var type = typeof(MappingResolver.CompoundIdentityTuple <int, string>);
            var expectedIdentityExpression = Expression.New(
                type.GetConstructors().Single(),
                new[] { new NamedExpression("Item1", expectedPrimaryColumn1), new NamedExpression("Item2", expectedPrimaryColumn2) },
                new[] { type.GetProperty("Item1"), type.GetProperty("Item2") });

            Assert.That(resolvedExpr.Type, Is.SameAs(typeof(DataContextTestClass.ClassWithCompoundPrimaryKey)));
            Assert.That(resolvedExpr.TableAlias, Is.EqualTo("t0"));
            Assert.That(resolvedExpr.Name, Is.Null);
            SqlExpressionTreeComparer.CheckAreEqualTrees(expectedIdentityExpression, resolvedExpr.GetIdentityExpression());
        }