This commit is contained in:
sunkaixuan
2017-05-29 15:26:28 +08:00
parent fc60aa307c
commit 5bbe4c1b2a
5 changed files with 208 additions and 94 deletions

View File

@@ -36,7 +36,8 @@ namespace SqlSugar
}
}
}
public abstract string ChangeDBTypeToCSharpType(string typeName);
public abstract string GetCSharpType(string dbTypeName);
public abstract string GetCSharpConvert(string dbTypeName);
#endregion

View File

@@ -163,9 +163,12 @@ namespace SqlSugar
PropertyDescriptionText = GetPropertyDescriptionText(item, PropertyDescriptionText);
PropertyText = PropertyDescriptionText + PropertyText;
classText = classText.Replace(DbFirstTemplate.KeyPropertyName, PropertyText + (isLast?"":("\r\n" + DbFirstTemplate.KeyPropertyName)));
ConstructorText = ConstructorText.Replace(DbFirstTemplate.KeyPropertyName,propertyName);
ConstructorText = ConstructorText.Replace(DbFirstTemplate.KeyPropertyType, propertyTypeName);
ConstructorText = ConstructorText.Replace(DbFirstTemplate.KeyDefaultValue, propertyName);
if (ConstructorText.IsValuable()&&item.DefaultValue.IsValuable())
{
ConstructorText = ConstructorText.Replace(DbFirstTemplate.KeyPropertyName, propertyName);
ConstructorText = ConstructorText.Replace(DbFirstTemplate.KeyPropertyType, propertyTypeName);
ConstructorText = ConstructorText.Replace(DbFirstTemplate.KeyDefaultValue, proertypeDefaultValue)+(isLast?"":"\r\n"+DbFirstTemplate.KeyPropertyName);
}
}
}
classText = classText.Replace(DbFirstTemplate.KeyConstructor, ConstructorText);
@@ -177,7 +180,16 @@ namespace SqlSugar
private string GetProertypeDefaultValue(DbColumnInfo item)
{
return item.Value.ObjToString();
if (item.DefaultValue == null) return null;
string result = item.DefaultValue.TrimStart('(').TrimEnd(')').TrimStart('\'').TrimEnd('\'');
if (item.DefaultValue.GetType() == PubConst.DateType)
{
return result.ObjToDate().ToString("yyyy-MM-dd hh:mm:ss.fff");
}
else
{
return result;
}
}
public void CreateClassFile(string directoryPath, string nameSpace = "Models")

View File

@@ -35,7 +35,7 @@ namespace SqlSugar
PropertySpace + "/// Nullable:{IsNullable}\r\n" +
PropertySpace + "/// </summary>";
public static string ConstructorTemplate = PropertySpace + "this.{$PropertyName} =Convert.To{PropertyType}(\"{DefaultValue}\");\r\n";
public static string ConstructorTemplate = PropertySpace + "this.{PropertyName} =Convert.To{PropertyType}(\"{DefaultValue}\");\r\n";
public static string UsingTemplate = "using System;\r\n" +
"using System.Linq;\r\n" +

View File

@@ -15,7 +15,8 @@ namespace SqlSugar
List<string> DoubleThrow { get; }
List<string> DateThrow { get; }
List<string> ShortThrow { get; }
string ChangeDBTypeToCSharpType(string typeName);
string GetCSharpType(string dbTypeName);
string GetCSharpConvert(string dbTypeName);
List<T> DataReaderToList<T>(Type type, IDataReader reader, string fields);
}
}

View File

@@ -6,94 +6,194 @@ namespace SqlSugar
{
public class SqlServerDbBind : DbBindProvider
{
public override string ChangeDBTypeToCSharpType(string typeName)
public override string GetCSharpType(string dbTypeName)
{
string reval = string.Empty;
switch (typeName.ToLower())
{
case "int":
reval = "int";
break;
case "text":
reval = "string";
break;
case "bigint":
reval = "long";
break;
case "binary":
reval = "object";
break;
case "bit":
reval = "bool";
break;
case "char":
reval = "string";
break;
case "datetime":
case "date":
case "datetime2":
reval = "dateTime";
break;
case "single":
case "decimal":
reval = "decimal";
break;
case "float":
reval = "double";
break;
case "image":
reval = "byte[]";
break;
case "money":
reval = "decimal";
break;
case "nchar":
reval = "string";
break;
case "ntext":
reval = "string";
break;
case "numeric":
reval = "decimal";
break;
case "nvarchar":
reval = "string";
break;
case "real":
reval = "float";
break;
case "smalldatetime":
reval = "dateTime";
break;
case "smallint":
reval = "short";
break;
case "smallmoney":
reval = "decimal";
break;
case "timestamp":
reval = "dateTime";
break;
case "tinyint":
reval = "byte";
break;
case "uniqueidentifier":
reval = "guid";
break;
case "varbinary":
reval = "byte[]";
break;
case "varchar":
reval = "string";
break;
case "Variant":
reval = "object";
break;
default:
reval = "other";
break;
}
return reval;
string reval = string.Empty;
switch (dbTypeName.ToLower())
{
case "int":
reval = "int";
break;
case "text":
reval = "string";
break;
case "bigint":
reval = "long";
break;
case "bit":
reval = "bool";
break;
case "char":
reval = "string";
break;
case "datetime":
case "date":
case "datetime2":
reval = "dateTime";
break;
case "single":
case "decimal":
reval = "decimal";
break;
case "float":
reval = "double";
break;
case "binary":
case "image":
reval = "byte[]";
break;
case "money":
reval = "decimal";
break;
case "nchar":
reval = "string";
break;
case "ntext":
reval = "string";
break;
case "numeric":
reval = "decimal";
break;
case "nvarchar":
reval = "string";
break;
case "real":
reval = "float";
break;
case "smalldatetime":
reval = "dateTime";
break;
case "smallint":
reval = "short";
break;
case "smallmoney":
reval = "decimal";
break;
case "timestamp":
reval = "dateTime";
break;
case "tinyint":
reval = "byte";
break;
case "uniqueidentifier":
reval = "guid";
break;
case "varbinary":
reval = "byte[]";
break;
case "varchar":
reval = "string";
break;
case "Variant":
reval = "object";
break;
default:
reval = "other";
break;
}
return reval;
}
public override string GetCSharpConvert(string dbTypeName)
{
string reval = string.Empty;
switch (dbTypeName.ToLower())
{
#region Int
case "int":
reval = "Convert.ToInt32";
break;
#endregion
#region String
case "nchar":
case "char":
case "ntext":
case "nvarchar":
case "varchar":
case "text":
reval = "Convert.ToString";
break;
#endregion
#region Long
case "bigint":
reval = "Convert.ToInt64";
break;
#endregion
#region Bool
case "bit":
reval = "Convert.ToBoolean";
break;
#endregion
#region Datetime
case "timestamp":
case "smalldatetime":
case "datetime":
case "date":
case "datetime2":
reval = "Convert.ToDateTime";
break;
#endregion
#region Decimal
case "smallmoney":
case "single":
case "numeric":
case "money":
case "decimal":
reval = "Convert.ToDecimal";
break;
#endregion
#region Double
case "float":
reval = "Convert.ToDouble";
break;
#endregion
#region Byte[]
case "varbinary":
case "binary":
case "image":
reval = "byte[]";
break;
#endregion
#region Float
case "real":
reval = "Convert.ToSingle";
break;
#endregion
#region Short
case "smallint":
reval = "Convert.ToInt16";
break;
#endregion
#region Byte
case "tinyint":
reval = "Convert.ToByte";
break;
#endregion
#region Guid
case "uniqueidentifier":
reval = "Guid.Parse";
break;
#endregion
#region Null
default:
reval = null;
break;
#endregion
}
return reval;
}
}
}