public CreateTableStatement BuildStatement()
        {
            var keyMembers = entitySet.ElementType.KeyMembers.Cast <EdmProperty>().ToArray();

            // Only create a CompositePrimaryKeyStatement if there is a composite primary key.
            // If there is just one key member this is handled using a constraint.
            CompositePrimaryKeyStatement compositePrimaryKeyStatement = null;

            if (keyMembers.Length > 1)
            {
                compositePrimaryKeyStatement = new CompositePrimaryKeyStatementBuilder(keyMembers).BuildStatement();
            }

            var simpleColumnCollection = new ColumnStatementCollectionBuilder(entitySet.ElementType.Properties, keyMembers).BuildStatement();
            var foreignKeyCollection   = new ForeignKeyStatementBuilder(associationTypeContainer.GetAssociationTypes(entitySet.Name)).BuildStatement();

            var columnStatements = new List <IStatement>();

            columnStatements.AddRange(simpleColumnCollection);
            columnStatements.AddIfNotNull(compositePrimaryKeyStatement);
            columnStatements.AddRange(foreignKeyCollection);

            return(new CreateTableStatement
            {
                TableName = NameCreator.EscapeName(entitySet.Table),
                ColumnStatementCollection = new ColumnStatementCollection(columnStatements)
            });
        }
Exemple #2
0
        public void CreateStatementWithOneKeyTest()
        {
            const string keyMember1 = "keyMember1";

            var primaryKeyStatement = new CompositePrimaryKeyStatement(new List <string> {
                keyMember1
            });

            Assert.AreEqual(primaryKeyStatement.Count, 1);
            Assert.AreEqual(primaryKeyStatement.CreateStatement(), "PRIMARY KEY(keyMember1)");
        }
        public void CreateStatementWithTwoKeyTest()
        {
            const string keyMember1 = "keyMember1";
            const string keyMember2 = "keyMember2";

            var primaryKeyStatement = new CompositePrimaryKeyStatement(new List <string> {
                keyMember1, keyMember2
            });

            Assert.AreEqual(primaryKeyStatement.Count, 2);
            Assert.AreEqual(primaryKeyStatement.CreateStatement(), "PRIMARY KEY([keyMember1], [keyMember2])");
        }