You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

189 lines
5.0 KiB

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
namespace SqlSugar
{
public class SugarParameter : DbParameter
{
public bool IsRefCursor { get; set; }
public SugarParameter(string name, object value)
{
this.Value = value;
this.ParameterName = name;
if (value != null)
{
SettingDataType(value.GetType());
}
}
public SugarParameter(string name, object value, Type type)
{
this.Value = value;
this.ParameterName = name;
SettingDataType(type);
}
public SugarParameter(string name, object value, Type type,ParameterDirection direction)
{
this.Value = value;
this.ParameterName = name;
this.Direction = direction;
SettingDataType(type);
}
public SugarParameter(string name, object value, Type type, ParameterDirection direction,int size)
{
this.Value = value;
this.ParameterName = name;
this.Direction = direction;
this.Size = size;
SettingDataType(type);
}
private void SettingDataType(Type type)
{
if (type == UtilConstants.ByteArrayType)
{
this.DbType = System.Data.DbType.Binary;
}
else if (type == UtilConstants.GuidType)
{
this.DbType = System.Data.DbType.Guid;
}
else if (type == UtilConstants.IntType)
{
this.DbType = System.Data.DbType.Int32;
}
else if (type == UtilConstants.ShortType)
{
this.DbType = System.Data.DbType.Int16;
}
else if (type == UtilConstants.LongType)
{
this.DbType = System.Data.DbType.Int64;
}
else if (type == UtilConstants.DateType)
{
this.DbType = System.Data.DbType.DateTime;
}
else if (type == UtilConstants.DobType)
{
this.DbType = System.Data.DbType.Double;
}
else if (type == UtilConstants.DecType)
{
this.DbType = System.Data.DbType.Decimal;
}
else if (type == UtilConstants.ByteType)
{
this.DbType = System.Data.DbType.Byte;
}
else if (type == UtilConstants.FloatType)
{
this.DbType = System.Data.DbType.Single;
}
else if (type == UtilConstants.BoolType)
{
this.DbType = System.Data.DbType.Boolean;
}
else if (type == UtilConstants.StringType)
{
this.DbType = System.Data.DbType.String;
}
}
public SugarParameter(string name, object value, bool isOutput)
{
this.Value = value;
this.ParameterName = name;
if (isOutput)
{
this.Direction = ParameterDirection.Output;
}
}
public override System.Data.DbType DbType
{
get; set;
}
public override ParameterDirection Direction
{
get; set;
}
public override bool IsNullable
{
get; set;
}
public override string ParameterName
{
get; set;
}
public int _Size;
public override int Size
{
get
{
if (_Size == 0 && Value != null)
{
var isByteArray = Value.GetType() == UtilConstants.ByteArrayType;
if (isByteArray)
_Size = -1;
else
{
var length = Value.ToString().Length;
_Size = length < 4000 ? 4000 : -1;
}
}
if (_Size == 0)
_Size = 4000;
return _Size;
}
set
{
_Size = value;
}
}
public override string SourceColumn
{
get; set;
}
public override bool SourceColumnNullMapping
{
get; set;
}
public string UdtTypeName
{
get;
set;
}
public override object Value
{
get; set;
}
public Dictionary<string, object> TempDate
{
get; set;
}
/// <summary>
/// 如果类库是.NET 4.5请删除该属性
/// If the SqlSugar library is.NET 4.5, delete the property
/// </summary>
public override DataRowVersion SourceVersion
{
get; set;
}
public override void ResetDbType()
{
this.DbType = System.Data.DbType.String;
}
}
}