mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 18:52:50 +08:00
- 增加 IAdo.GetDbParamtersByObject 方法获取 DbParameter[];
This commit is contained in:
parent
7dd8eacce3
commit
f43d42bc2e
@ -102,6 +102,12 @@ namespace base_entity
|
|||||||
var names = (fsql.Select<object>() as Select0Provider)._commonUtils.SplitTableName("`Backups.ProductStockBak`");
|
var names = (fsql.Select<object>() as Select0Provider)._commonUtils.SplitTableName("`Backups.ProductStockBak`");
|
||||||
|
|
||||||
|
|
||||||
|
var dbparams = fsql.Ado.GetDbParamtersByObject(new { id = 1, name = "xxx" });
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var sql = fsql.CodeFirst.GetComparisonDDLStatements(typeof(EMSServerModel.Model.User), "testxsx001");
|
var sql = fsql.CodeFirst.GetComparisonDDLStatements(typeof(EMSServerModel.Model.User), "testxsx001");
|
||||||
|
|
||||||
var test01 = EMSServerModel.Model.User.Select.IncludeMany(a => a.Roles).ToList();
|
var test01 = EMSServerModel.Model.User.Select.IncludeMany(a => a.Roles).ToList();
|
||||||
|
@ -130,6 +130,13 @@
|
|||||||
清空状态数据
|
清空状态数据
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:FreeSql.DbSet`1.RemoveAsync(System.Linq.Expressions.Expression{System.Func{`0,System.Boolean}})">
|
||||||
|
<summary>
|
||||||
|
根据 lambda 条件删除数据
|
||||||
|
</summary>
|
||||||
|
<param name="predicate"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:FreeSql.DbSet`1.Add(`0)">
|
<member name="M:FreeSql.DbSet`1.Add(`0)">
|
||||||
<summary>
|
<summary>
|
||||||
添加
|
添加
|
||||||
@ -525,5 +532,14 @@
|
|||||||
<param name="that"></param>
|
<param name="that"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:Microsoft.Extensions.DependencyInjection.FreeSqlRepositoryDependencyInjection.AddFreeRepository(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{FreeSql.FluentDataFilter},System.Reflection.Assembly[])">
|
||||||
|
<summary>
|
||||||
|
批量注入 Repository,可以参考代码自行调整
|
||||||
|
</summary>
|
||||||
|
<param name="services"></param>
|
||||||
|
<param name="globalDataFilter"></param>
|
||||||
|
<param name="assemblies"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
</members>
|
</members>
|
||||||
</doc>
|
</doc>
|
||||||
|
@ -2467,6 +2467,13 @@
|
|||||||
当前线程的事务
|
当前线程的事务
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:FreeSql.IAdo.GetDbParamtersByObject(System.Object)">
|
||||||
|
<summary>
|
||||||
|
将 new { id = 1 } 或者 Dictionary<string, object> 转换为 DbParameter[]
|
||||||
|
</summary>
|
||||||
|
<param name="obj">new { id = 1 } 或者 Dictionary<string, object></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:FreeSql.IAdo.ExecuteReader(System.Action{FreeSql.Internal.Model.FetchCallbackArgs{System.Data.Common.DbDataReader}},System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
|
<member name="M:FreeSql.IAdo.ExecuteReader(System.Action{FreeSql.Internal.Model.FetchCallbackArgs{System.Data.Common.DbDataReader}},System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
|
||||||
<summary>
|
<summary>
|
||||||
查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】
|
查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】
|
||||||
|
@ -55,6 +55,13 @@ namespace FreeSql
|
|||||||
DbTransaction TransactionCurrentThread { get; }
|
DbTransaction TransactionCurrentThread { get; }
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 将 new { id = 1 } 或者 Dictionary<string, object> 转换为 DbParameter[]
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="obj">new { id = 1 } 或者 Dictionary<string, object></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
DbParameter[] GetDbParamtersByObject(object obj);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】
|
/// 查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -18,6 +18,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
protected abstract void ReturnConnection(IObjectPool<DbConnection> pool, Object<DbConnection> conn, Exception ex);
|
protected abstract void ReturnConnection(IObjectPool<DbConnection> pool, Object<DbConnection> conn, Exception ex);
|
||||||
protected abstract DbCommand CreateCommand();
|
protected abstract DbCommand CreateCommand();
|
||||||
protected abstract DbParameter[] GetDbParamtersByObject(string sql, object obj);
|
protected abstract DbParameter[] GetDbParamtersByObject(string sql, object obj);
|
||||||
|
public DbParameter[] GetDbParamtersByObject(object obj) => GetDbParamtersByObject("*", obj);
|
||||||
|
|
||||||
protected bool IsTracePerformance => _util?._orm?.Aop.CommandAfterHandler != null;
|
protected bool IsTracePerformance => _util?._orm?.Aop.CommandAfterHandler != null;
|
||||||
|
|
||||||
|
@ -1218,6 +1218,7 @@ namespace FreeSql.Internal
|
|||||||
public static T[] GetDbParamtersByObject<T>(string sql, object obj, string paramPrefix, Func<string, Type, object, T> constructorParamter)
|
public static T[] GetDbParamtersByObject<T>(string sql, object obj, string paramPrefix, Func<string, Type, object, T> constructorParamter)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(sql) || obj == null) return new T[0];
|
if (string.IsNullOrEmpty(sql) || obj == null) return new T[0];
|
||||||
|
var isCheckSql = sql != "*";
|
||||||
var ttype = typeof(T);
|
var ttype = typeof(T);
|
||||||
var type = obj.GetType();
|
var type = obj.GetType();
|
||||||
if (type == ttype) return new[] { (T)Convert.ChangeType(obj, type) };
|
if (type == ttype) return new[] { (T)Convert.ChangeType(obj, type) };
|
||||||
@ -1227,7 +1228,7 @@ namespace FreeSql.Internal
|
|||||||
{
|
{
|
||||||
foreach (var key in dic.Keys)
|
foreach (var key in dic.Keys)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(paramPrefix) == false && sql.IndexOf($"{paramPrefix}{key}", StringComparison.CurrentCultureIgnoreCase) == -1) continue;
|
if (isCheckSql && string.IsNullOrEmpty(paramPrefix) == false && sql.IndexOf($"{paramPrefix}{key}", StringComparison.CurrentCultureIgnoreCase) == -1) continue;
|
||||||
var val = dic[key];
|
var val = dic[key];
|
||||||
var valType = val == null ? typeof(string) : val.GetType();
|
var valType = val == null ? typeof(string) : val.GetType();
|
||||||
if (valType == ttype) ret.Add((T)Convert.ChangeType(val, ttype));
|
if (valType == ttype) ret.Add((T)Convert.ChangeType(val, ttype));
|
||||||
@ -1239,7 +1240,7 @@ namespace FreeSql.Internal
|
|||||||
var ps = type.GetPropertiesDictIgnoreCase().Values;
|
var ps = type.GetPropertiesDictIgnoreCase().Values;
|
||||||
foreach (var p in ps)
|
foreach (var p in ps)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(paramPrefix) == false && sql.IndexOf($"{paramPrefix}{p.Name}", StringComparison.CurrentCultureIgnoreCase) == -1) continue;
|
if (isCheckSql && string.IsNullOrEmpty(paramPrefix) == false && sql.IndexOf($"{paramPrefix}{p.Name}", StringComparison.CurrentCultureIgnoreCase) == -1) continue;
|
||||||
var pvalue = p.GetValue(obj, null);
|
var pvalue = p.GetValue(obj, null);
|
||||||
if (p.PropertyType == ttype) ret.Add((T)Convert.ChangeType(pvalue, ttype));
|
if (p.PropertyType == ttype) ret.Add((T)Convert.ChangeType(pvalue, ttype));
|
||||||
else ret.Add(constructorParamter(p.Name, p.PropertyType, pvalue));
|
else ret.Add(constructorParamter(p.Name, p.PropertyType, pvalue));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user