protected override string BuildTableScript(Mapping.IEntityMapping mapping) { Guard.NotNull(mapping, "mapping"); var tableName = GetTableName(mapping); var sb = new StringBuilder(512); sb.Append("CREATE TABLE ").Append(tableName).Append("("); int num = 0; foreach (var f in mapping.Members.Where(p => !p.IsRelationship && !p.IsComputed)) { if (num > 0) { sb.Append(","); } sb.AppendLine(); sb.Append("\t").Append(Dialect.Quote(f.ColumnName)); var sqlType = f.SqlType; sb.Append(" ").Append(GetDbType(f.SqlType)); if (sqlType.Required || f.IsPrimaryKey) { sb.Append(" NOT NULL"); } if (f.IsPrimaryKey && !f.IsGenerated && mapping.PrimaryKeys.Length == 1) { sb.Append(" PRIMARY KEY"); } if (f.IsGenerated) { sb.Append(GetDefaultValue(f, sqlType)); } num++; } if (mapping.PrimaryKeys.Count() > 1) { sb.AppendLine().Append(CreatePKScript(mapping.Members)) .Append(") ENGINE=INNODB;"); sb.AppendLine(""); } else { sb.AppendLine() .Append(") ENGINE=INNODB;"); sb.AppendLine(""); } return(sb.ToString()); }
protected override void WriteTableName(Mapping.IEntityMapping mapping) { if (mapping.ServerName.HasValue()) { sb.Append(Dialect.Quote(mapping.ServerName)).Append("."); } if (mapping.DatabaseName.HasValue()) { sb.Append(Dialect.Quote(mapping.DatabaseName)).Append("."); } if (Dialect.SupportSchema && !string.IsNullOrEmpty(mapping.Schema)) { sb.Append(Dialect.Quote(mapping.Schema)); sb.Append("."); } this.AppendTableName(mapping.TableName); }
protected override string BuildTableScript(Mapping.IEntityMapping mapping) { var tableName = GetTableName(mapping); var sb = new StringBuilder(512); sb.Append("CREATE TABLE ").Append(tableName).Append("("); int num = 0; foreach (var f in mapping.Members.Where(p => !p.IsRelationship && !p.IsComputed)) { if (num > 0) { sb.Append(","); } sb.AppendLine(); sb.Append("\t").Append(Dialect.Quote(f.ColumnName)); var sqlType = f.SqlType; sb.Append(" ").Append(GetDbType(f.SqlType)); if (sqlType.Required || f.IsPrimaryKey) { sb.Append(" NOT NULL"); } if (f.IsGenerated) { sb.Append(GetDefaultValue(f, sqlType)); } num++; } sb.AppendLine() .Append(")"); sb.AppendLine(""); return(sb.ToString()); }
protected override string BuildSequenceScript(Mapping.IEntityMapping mapping) { var sequenceName = mapping.Members.Where(p => p.IsGenerated).Select(p => p.SequenceName).Where(p => p.HasValue()).ToArray(); var sb = new StringBuilder(512); if (sequenceName != null) { foreach (var s in sequenceName) { sb.Append("CREATE SEQUENCE ") .Append(s) .AppendLine() .Append("\t MINVALUE 1 ") .Append("\t MAXVALUE 99999999 ") .Append("\t START WITH 1 ") .Append("\t INCREMENT BY 1") .Append("\t NOCACHE") .Append("\t ORDER") ; } } return(sb.ToString()); }
private string CreateFKScript(Mapping.IEntityMapping mapping) { var fks = mapping.Members.Where(p => p.IsManyToOne).ToArray(); if (fks.Length == 0) { return(null); } var sb = new StringBuilder(512); foreach (var fk in fks) { sb.Append(string.Concat(",FOREIGN KEY (" , Dialect.Quote(fk.ThisKeyMembers.FirstOrDefault().ColumnName) , ") REFERENCES " , GetTableName(fk.RelatedEntity) , "(" , Dialect.Quote(fk.OtherKeyMembers.FirstOrDefault().ColumnName) , ")")); } return(sb.ToString()); }
/// <summary> /// 构建序列脚本 /// </summary> /// <param name="members"></param> /// <returns></returns> protected virtual string BuildSequenceScript(Mapping.IEntityMapping mapping) { return(null); }
protected override string BuildTableScript(Mapping.IEntityMapping mapping) { Guard.NotNull(mapping, "mapping"); var tableName = GetTableName(mapping); var sb = new StringBuilder(512); sb.Append("CREATE TABLE ").Append(tableName).Append("("); int num = 0; foreach (var f in mapping.Members.Where(p => !p.IsRelationship && !p.IsComputed)) { sb.AppendLine("\t"); if (num > 0) { sb.Append(","); } sb.Append(Dialect.Quote(f.ColumnName)); var sqlType = f.SqlType; sb.Append(" ").Append(GetDbType(f.SqlType)); if (sqlType.Required && !f.IsPrimaryKey) { sb.Append(" NOT NULL"); } if (f.IsPrimaryKey && mapping.PrimaryKeys.Length == 1) { sb.Append(" PRIMARY KEY"); } if (f.IsGenerated) { sb.Append(GetDefaultValue(f, sqlType)); } num++; } if (mapping.PrimaryKeys.Count() > 1) { sb.AppendLine("\t").Append(CreatePKScript(mapping.Members)) ; } var fks = mapping.Members.Where(p => p.IsManyToOne).ToArray(); foreach (var fk in fks) { sb.AppendLine(string.Concat("\t,FOREIGN KEY (" , Dialect.Quote(fk.ThisKeyMembers.FirstOrDefault().ColumnName) , ") REFERENCES " , GetTableName(fk.RelatedEntity) , "(" , Dialect.Quote(fk.OtherKeyMembers.FirstOrDefault().ColumnName) , ")")); } sb.AppendLine() .Append(");"); sb.AppendLine(""); return(sb.ToString()); }