private static void AppendCreateTableScript(StringBuilder sb, Type type)
{
var mappingResolver = new MappingResolverStub();
var generator = new UniqueIdentifierGenerator();
var tableInfo = (ResolvedSimpleTableInfo)mappingResolver.ResolveTableInfo(new UnresolvedTableInfo(type), generator);
var entity = mappingResolver.ResolveSimpleTableInfo(tableInfo, generator);
var columnDeclarations = from c in entity.Columns
let sqlTypeName = GetColumnType(c)
select string.Format("[{0}] {1}", c.ColumnName, sqlTypeName);
var primaryKeyColumns = entity.Columns.Where(c => c.IsPrimaryKey).Select(c => c.ColumnName).ToArray();
string primaryKeyConstraint = "";
if (primaryKeyColumns.Length > 0)
{
primaryKeyConstraint = string.Format(
" CONSTRAINT PK_{0} PRIMARY KEY ({1})", tableInfo.TableName.Replace(".", "_"), string.Join(",", primaryKeyColumns));
}
sb.AppendFormat(
"CREATE TABLE [{0}]{1}({1}{2}{1} {3})",
tableInfo.TableName,
Environment.NewLine,
string.Join("," + Environment.NewLine, columnDeclarations.Select(c => " " + c)),
primaryKeyConstraint);
sb.AppendLine();
}