private string GetTableCreateScript(EntitySet entitySet)
{
EntityType e = entitySet.ElementType;
string typeName = null;
if (_pluralizedNames.ContainsKey(e.Name))
{
typeName = _pluralizedNames[e.Name];
}
else
{
_pluralizedNames.Add(e.Name,
(string)entitySet.MetadataProperties["Table"].Value == null ?
e.Name : (string)entitySet.MetadataProperties["Table"].Value);
typeName = _pluralizedNames[e.Name];
}
StringBuilder sql = new StringBuilder("CREATE TABLE ");
sql.AppendFormat("`{0}`(", typeName );
string delimiter = "";
bool hasPK = false;
foreach (EdmProperty c in e.Properties)
{
Facet facet;
hasPK = hasPK ||
(c.TypeUsage.Facets.TryGetValue("StoreGeneratedPattern", false, out facet) &&
facet.Value.Equals(StoreGeneratedPattern.Identity));
sql.AppendFormat("{0}{1}\t`{2}` {3}{4}", delimiter, Environment.NewLine, c.Name,
GetColumnType(c.TypeUsage), GetFacetString(c));
delimiter = ", ";
}
sql.AppendLine(");");
sql.AppendLine();
if (!hasPK && e.KeyMembers.Count > 0)
{
sql.Append(String.Format(
"ALTER TABLE `{0}` ADD PRIMARY KEY (", typeName ));
delimiter = "";
foreach (EdmMember m in e.KeyMembers)
{
sql.AppendFormat("{0}{1}", delimiter, m.Name);
delimiter = ", ";
}
sql.AppendLine(");");
sql.AppendLine();
}
return sql.ToString();
}