SqlParamter Bug

This commit is contained in:
sunkaixuan 2017-06-01 14:26:49 +08:00
parent b6a57b3614
commit d04240dc08
7 changed files with 39 additions and 5 deletions

View File

@ -41,6 +41,7 @@ namespace OrmTest.UnitTest
};
var id = db.Insertable<DataTestInfo>(insertObject).ExecuteReutrnIdentity();
var data = db.Queryable<DataTestInfo>().InSingle(id);
db.Updateable(data).ExecuteCommand();
}
public SqlSugarClient GetInstance()
{

View File

@ -132,7 +132,7 @@ namespace SqlSugar
foreach (var item in this.InsertBuilder.DbColumnInfoList)
{
if (this.InsertBuilder.Parameters == null) this.InsertBuilder.Parameters = new List<SugarParameter>();
var paramters = new SugarParameter(this.SqlBuilder.SqlParameterKeyWord + item.DbColumnName, item.Value);
var paramters = new SugarParameter(this.SqlBuilder.SqlParameterKeyWord + item.DbColumnName, item.Value,item.PropertyType);
if (InsertBuilder.IsInsertNull && paramters.Value == null) {
continue;
}
@ -155,6 +155,7 @@ namespace SqlSugar
Value = column.PropertyInfo.GetValue(item,null),
DbColumnName = GetDbColumnName(column.PropertyName),
PropertyName = column.PropertyName,
PropertyType=PubMethod.GetUnderType(column.PropertyInfo),
TableId = i
};
insertItem.Add(columnInfo);

View File

@ -145,6 +145,7 @@ namespace SqlSugar
Value = column.PropertyInfo.GetValue(item, null),
DbColumnName = GetDbColumnName(column.PropertyName),
PropertyName = column.PropertyName,
PropertyType=PubMethod.GetUnderType(column.PropertyInfo),
TableId = i
};
insertItem.Add(columnInfo);
@ -171,7 +172,7 @@ namespace SqlSugar
foreach (var item in this.UpdateBuilder.DbColumnInfoList)
{
if (this.UpdateBuilder.Parameters == null) this.UpdateBuilder.Parameters = new List<SugarParameter>();
this.UpdateBuilder.Parameters.Add(new SugarParameter(this.SqlBuilder.SqlParameterKeyWord + item.DbColumnName, item.Value));
this.UpdateBuilder.Parameters.Add(new SugarParameter(this.SqlBuilder.SqlParameterKeyWord + item.DbColumnName, item.Value,item.PropertyType));
}
}

View File

@ -14,6 +14,7 @@ namespace SqlSugar
internal static Type GuidType = typeof(Guid);
internal static Type DateType = typeof(DateTime);
internal static Type ByteType = typeof(Byte);
internal static Type ByteArrayType = typeof(byte[]);
internal static Type BoolType = typeof(bool);
internal static Type ObjType = typeof(object);
internal static Type Dob = typeof(double);

View File

@ -17,6 +17,13 @@ namespace SqlSugar
return unType;
}
internal static Type GetUnderType(PropertyInfo propertyInfo)
{
Type unType = Nullable.GetUnderlyingType(propertyInfo.PropertyType);
unType = unType ?? propertyInfo.PropertyType;
return unType;
}
internal static T IsNullReturnNew<T>(T returnObj) where T : new()
{
if (returnObj.IsNullOrEmpty())

View File

@ -11,6 +11,7 @@ namespace SqlSugar
public string DbColumnName { get; set; }
public string PropertyName { get; set; }
public string DataType { get; set; }
public Type PropertyType { get; set; }
public int Length { get; set; }
public string ColumnDescription { get; set; }
public string DefaultValue { get; set; }

View File

@ -14,11 +14,33 @@ namespace SqlSugar
this.Value = value;
this.ParameterName = name;
}
public SugarParameter(string name, object value,bool isOutput)
public SugarParameter(string name, object value, Type type)
{
this.Value = value;
this.ParameterName = name;
if (isOutput) {
if (type == PubConst.ByteArrayType)
{
this.DbType = System.Data.DbType.Binary;
}
else if (type == PubConst.GuidType)
{
this.DbType = System.Data.DbType.Guid;
}
else if (type == PubConst.IntType)
{
this.DbType = System.Data.DbType.Int32;
}
else if (type == PubConst.DateType)
{
this.DbType = System.Data.DbType.Date;
}
}
public SugarParameter(string name, object value, bool isOutput)
{
this.Value = value;
this.ParameterName = name;
if (isOutput)
{
this.Direction = ParameterDirection.Output;
}
}
@ -74,7 +96,7 @@ namespace SqlSugar
public override DataRowVersion SourceVersion
{
get;set;
get; set;
}
public override void ResetDbType()