public PrimaryKey DeterminePrimaryKeys(Table table) { var primaryKeys = table.Columns.Where(x => x.IsPrimaryKey.Equals(true)).ToList(); if (primaryKeys.Count() == 1) { var c = primaryKeys.First(); var key = new PrimaryKey { Type = PrimaryKeyType.PrimaryKey, Columns = { c } }; return key; } if (primaryKeys.Count() > 1) { // Composite key var key = new PrimaryKey { Type = PrimaryKeyType.CompositeKey, Columns = primaryKeys }; return key; } return null; }
private static CodeSnippetStatement GetIdMapCodeSnippetStatement(PrimaryKey primaryKey, Table table, ITextFormatter formatter) { var keyPropertyBuilder = new StringBuilder(primaryKey.Columns.Count); bool first = true; foreach (Column pkColumn in primaryKey.Columns) { var propertyName = formatter.FormatText(pkColumn.Name); var fieldName = FixPropertyWithSameClassName(propertyName, table.Name); var pkAlsoFkQty = (from fk in table.ForeignKeys.Where(fk => fk.UniquePropertyName == pkColumn.Name) select fk).Count(); if (pkAlsoFkQty > 0) fieldName = fieldName + "Id"; var tmp = String.Format(".KeyProperty(x => x.{0}, \"{1}\")",fieldName, pkColumn.Name); keyPropertyBuilder.Append(first ? tmp : "\n" + TABS + " " + tmp); first = false; } return new CodeSnippetStatement(TABS + string.Format("CompositeId(){0};", keyPropertyBuilder)); }
private static CodeSnippetStatement GetIdMapCodeSnippetStatement(PrimaryKey primaryKey, ITextFormatter formatter) { var keyPropertyBuilder = new StringBuilder(primaryKey.Columns.Count); foreach (Column pkColumn in primaryKey.Columns) { keyPropertyBuilder.Append(String.Format(".KeyProperty(x => x.{0}, \"{1}\")", formatter.FormatText(pkColumn.Name), pkColumn.Name)); } return new CodeSnippetStatement(TABS + string.Format("CompositeId(){0};", keyPropertyBuilder)); }