private void ProcessColumn(ColumnInfo ci, DbDialect dd) { string nullDefine = ci.AllowNull ? dd.NullString : dd.NotNullString; _sql.Append("\n\t"); _sql.Append(dd.QuoteForColumnName(ci.Key)); _sql.Append(" "); if (ci.IsDbGenerate && dd.IdentityTypeString != null) { _sql.Append(dd.IdentityTypeString); } else { _sql.Append(dd.GetTypeName(ci)); } if (ci.IsDbGenerate) { _sql.Append(" ").Append(dd.IdentityColumnString); } if (ci.IsKey) { ProcessKeyColumn(ci, dd, nullDefine); } else { _sql.Append(nullDefine); } _sql.Append(","); }
public virtual CreateTableStatementBuilder GetCreateTableStatementBuilder() { var builder = new CreateTableStatementBuilder(this.Context.Info.From.MainTableName); foreach (MemberHandler member in this.Context.Info.Members) { if ((!member.Is.HasMany && !member.Is.HasOne) && !member.Is.HasAndBelongsToMany) { var item = new ColumnInfo(member); builder.Columns.Add(item); } } foreach (string key in this.Context.Info.Indexes.Keys) { bool unique = this.Context.Info.UniqueIndexes.ContainsKey(key); builder.Indexes.Add(new DbIndex(key, unique, this.Context.Info.Indexes[key].ToArray())); } return builder; }
public virtual string GetTypeName(ColumnInfo ci) { return GetTypeName(DataTypeParser.Parse(ci.ValueType), ci.IsUnicode, ci.Length, ci.DecimalPart); }
private void ProcessKeyColumn(ColumnInfo ci, DbDialect dd, string nullDefine) { if (_isMutiKey) { _sql.Append(nullDefine); } else { if (ci.ValueType == typeof(Guid) || !dd.IdentityIncludePKString || !ci.IsDbGenerate) { if (!ci.IsDbGenerate) { _sql.Append(nullDefine); } _sql.Append(" PRIMARY KEY"); } } }