protected override DbColumnInfo EntityColumnToDbColumn(EntityInfo entityInfo, string tableName, EntityColumnInfo item) { var propertyType = UtilMethods.GetUnderType(item.PropertyInfo); var result = new DbColumnInfo() { TableId = entityInfo.Columns.IndexOf(item), DbColumnName = item.DbColumnName.HasValue() ? item.DbColumnName : item.PropertyName, IsPrimarykey = item.IsPrimarykey, IsIdentity = item.IsIdentity, TableName = tableName, IsNullable = item.IsNullable, DefaultValue = item.DefaultValue, ColumnDescription = item.ColumnDescription, Length = item.Length, DecimalDigits = item.DecimalDigits }; GetDbType(item, propertyType, result); if (result.DataType.Equals("varchar", StringComparison.CurrentCultureIgnoreCase) && result.Length == 0) { result.Length = 1; } return(result); }
public override void NoExistLogic(EntityInfo entityInfo) { var tableName = GetTableName(entityInfo); //Check.Exception(entityInfo.Columns.Where(it => it.IsPrimarykey).Count() > 1, "Use Code First ,The primary key must not exceed 1"); List <DbColumnInfo> columns = new List <DbColumnInfo>(); if (entityInfo.Columns.HasValue()) { foreach (var item in entityInfo.Columns.OrderBy(it => it.IsPrimarykey ? 0 : 1)) { if (item.IsIgnore) { continue; } if (item.PropertyInfo != null && UtilMethods.GetUnderType(item.PropertyInfo.PropertyType) == UtilConstants.GuidType && item.Length == 0 && item.DataType == null) { item.Length = Guid.NewGuid().ToString().Length; } DbColumnInfo dbColumnInfo = this.EntityColumnToDbColumn(entityInfo, tableName, item); columns.Add(dbColumnInfo); } } this.Context.DbMaintenance.CreateTable(tableName, columns, true); }
public override object FormatValue(object value) { var n = "N"; if (this.Context.CurrentConnectionConfig.MoreSettings != null && this.Context.CurrentConnectionConfig.MoreSettings.DisableNvarchar) { n = ""; } if (value == null) { return("NULL"); } else { var type = UtilMethods.GetUnderType(value.GetType()); if (type == UtilConstants.DateType) { var date = value.ObjToDate(); if (date < Convert.ToDateTime("1900-1-1")) { date = Convert.ToDateTime("1900-1-1"); } return("'" + date.ToString("yyyy-MM-dd HH:mm:ss.fff") + "'"); } else if (type == UtilConstants.ByteArrayType) { string bytesString = "0x" + BitConverter.ToString((byte[])value).Replace("-", ""); return(bytesString); } else if (type.IsEnum()) { if (this.Context.CurrentConnectionConfig.MoreSettings?.TableEnumIsString == true) { return(value.ToSqlValue()); } else { return(Convert.ToInt64(value)); } } else if (type == UtilConstants.LongType) { return(GetString(value)); } else if (type == UtilConstants.IntType) { return(GetString(value)); } else if (type == UtilConstants.BoolType) { return(value.ObjToBool() ? "1" : "0"); } else if (type == UtilConstants.StringType || type == UtilConstants.ObjType) { return(n + "'" + GetString(value).ToSqlFilter() + "'"); } else { return(n + "'" + GetString(value) + "'"); } } }