- 调整内部参数化处理逻辑,为以后 Where 条件参数化做准备;

This commit is contained in:
28810
2019-11-22 05:58:17 +08:00
parent 71dbd75a72
commit 12be7f0051
32 changed files with 213 additions and 97 deletions

View File

@ -1,4 +1,5 @@
using FreeSql.Internal;
using FreeSql.Internal.Model;
using System;
using System.Collections.Generic;
using System.Data;
@ -16,9 +17,10 @@ namespace FreeSql.Odbc.Default
public OdbcUtils(IFreeSql orm) : base(orm) { }
public OdbcAdapter Adapter => _orm.GetOdbcAdapter();
public override DbParameter AppendParamter(List<DbParameter> _params, string parameterName, Type type, object value)
public override DbParameter AppendParamter(List<DbParameter> _params, string parameterName, ColumnInfo col, Type type, object value)
{
if (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
if (type == null && col != null) type = col.Attribute.MapType ?? col.CsType;
if (value?.Equals(DateTime.MinValue) == true) value = new DateTime(1970, 1, 1);
var ret = new OdbcParameter { ParameterName = QuoteParamterName(parameterName), Value = value };
var tp = _orm.CodeFirst.GetDbInfo(type)?.type;

View File

@ -18,9 +18,10 @@ namespace FreeSql.Odbc.MySql
{
}
public override DbParameter AppendParamter(List<DbParameter> _params, string parameterName, Type type, object value)
public override DbParameter AppendParamter(List<DbParameter> _params, string parameterName, ColumnInfo col, Type type, object value)
{
if (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
if (type == null && col != null) type = col.Attribute.MapType ?? col.CsType;
var ret = new OdbcParameter { ParameterName = QuoteParamterName(parameterName), Value = value };
var tp = _orm.CodeFirst.GetDbInfo(type)?.type;
if (tp != null)

View File

@ -68,7 +68,7 @@ namespace FreeSql.Odbc.Oracle
else
{
sb.Append(_commonUtils.QuoteWriteParamter(col.Attribute.MapType, _commonUtils.QuoteParamterName($"{col.CsName}_{didx}")));
_params[didx * colidx + colidx2] = _commonUtils.AppendParamter(null, $"{col.CsName}_{didx}", col.Attribute.MapType, val);
_params[didx * colidx + colidx2] = _commonUtils.AppendParamter(null, $"{col.CsName}_{didx}", col, col.Attribute.MapType, val);
}
++colidx2;
}
@ -110,7 +110,7 @@ namespace FreeSql.Odbc.Oracle
return 0;
}
var identColName = _commonUtils.QuoteSqlName(_identCol.Attribute.Name);
var identParam = _commonUtils.AppendParamter(null, $"{_identCol.CsName}99", _identCol.Attribute.MapType, 0);
var identParam = _commonUtils.AppendParamter(null, $"{_identCol.CsName}99", _identCol, _identCol.Attribute.MapType, 0);
identParam.Direction = ParameterDirection.Output;
sql = $"{sql} RETURNING {identColName} INTO {identParam.ParameterName}";
var dbParms = _params.Concat(new[] { identParam }).ToArray();
@ -179,7 +179,7 @@ namespace FreeSql.Odbc.Oracle
return 0;
}
var identColName = _commonUtils.QuoteSqlName(_identCol.Attribute.Name);
var identParam = _commonUtils.AppendParamter(null, $"{_identCol.CsName}99", _identCol.Attribute.MapType, 0);
var identParam = _commonUtils.AppendParamter(null, $"{_identCol.CsName}99", _identCol, _identCol.Attribute.MapType, 0);
identParam.Direction = ParameterDirection.Output;
sql = $"{sql} RETURNING {identColName} INTO {identParam.ParameterName}";
var dbParms = _params.Concat(new[] { identParam }).ToArray();

View File

@ -16,9 +16,10 @@ namespace FreeSql.Odbc.Oracle
{
}
public override DbParameter AppendParamter(List<DbParameter> _params, string parameterName, Type type, object value)
public override DbParameter AppendParamter(List<DbParameter> _params, string parameterName, ColumnInfo col, Type type, object value)
{
if (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
if (type == null && col != null) type = col.Attribute.MapType ?? col.CsType;
var dbtype = (OdbcType)_orm.CodeFirst.GetDbInfo(type)?.type;
switch (dbtype)
{

View File

@ -10,6 +10,7 @@ using System.Text;
using System.Linq.Expressions;
using System.Reflection;
using System.Data.Odbc;
using FreeSql.Internal.Model;
namespace FreeSql.Odbc.PostgreSQL
{
@ -63,9 +64,10 @@ namespace FreeSql.Odbc.PostgreSQL
return value;
}
public override DbParameter AppendParamter(List<DbParameter> _params, string parameterName, Type type, object value)
public override DbParameter AppendParamter(List<DbParameter> _params, string parameterName, ColumnInfo col, Type type, object value)
{
if (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
if (type == null && col != null) type = col.Attribute.MapType ?? col.CsType;
if (value != null) value = getParamterValue(type, value);
var ret = new OdbcParameter { ParameterName = QuoteParamterName(parameterName), Value = value };
//if (value.GetType().IsEnum || value.GetType().GenericTypeArguments.FirstOrDefault()?.IsEnum == true) {

View File

@ -1,4 +1,5 @@
using FreeSql.Internal;
using FreeSql.Internal.Model;
using System;
using System.Collections.Generic;
using System.Data;
@ -21,9 +22,10 @@ namespace FreeSql.Odbc.SqlServer
public bool IsSqlServer2005 => ServerVersion == 9;
public int ServerVersion = 0;
public override DbParameter AppendParamter(List<DbParameter> _params, string parameterName, Type type, object value)
public override DbParameter AppendParamter(List<DbParameter> _params, string parameterName, ColumnInfo col, Type type, object value)
{
if (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
if (type == null && col != null) type = col.Attribute.MapType ?? col.CsType;
if (value?.Equals(DateTime.MinValue) == true) value = new DateTime(1970, 1, 1);
var ret = new OdbcParameter { ParameterName = QuoteParamterName(parameterName), Value = value };
var tp = _orm.CodeFirst.GetDbInfo(type)?.type;