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) }); }
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])"); }