Skip to content

Commit 72bea83

Browse files
committed
移除未实现的EF调用存储过程的方法,增加EF调用原生sql参数化查询FromSqlInterpolated
1 parent 1773cb3 commit 72bea83

File tree

4 files changed

+54
-78
lines changed

4 files changed

+54
-78
lines changed

Vue.Net/VOL.Core/BaseProvider/IRepository.cs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -256,15 +256,21 @@ void AddRange<T>(IEnumerable<T> entities, bool saveChanges = false)
256256

257257
Task<int> SaveChangesAsync();
258258

259-
//执行存储过程
260-
List<TEntity> RunProc(string sql, params SqlParameter[] pamrs);
259+
261260

262261
int ExecuteSqlCommand(string sql, params SqlParameter[] sqlParameters);
263262

264263
List<TEntity> FromSql(string sql, params SqlParameter[] sqlParameters);
265264

265+
/// <summary>
266+
/// 执行sql
267+
/// 使用方式 FormattableString sql=$"select * from xx where name ={xx} and pwd={xx1} ",
268+
/// FromSqlInterpolated内部处理sql注入的问题,直接在{xx}写对应的值即可
269+
/// 注意:sql必须 select * 返回所有TEntity字段,
270+
/// </summary>
271+
/// <param name="formattableString"></param>
272+
/// <returns></returns>
273+
IQueryable<TEntity> FromSqlInterpolated([System.Diagnostics.CodeAnalysis.NotNull] FormattableString sql);
266274

267-
268-
269275
}
270276
}

Vue.Net/VOL.Core/BaseProvider/RepositoryBase.cs

Lines changed: 17 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Collections.Generic;
66
using System.Data.Common;
77
using System.Data.SqlClient;
8+
using System.Diagnostics.CodeAnalysis;
89
using System.Linq;
910
using System.Linq.Expressions;
1011
using System.Reflection;
@@ -575,48 +576,29 @@ public virtual Task<int> SaveChangesAsync()
575576
{
576577
return EFContext.SaveChangesAsync();
577578
}
578-
/// <summary>
579-
/// new SqlParameter("@tableName",TableName)
580-
/// </summary>
581-
/// <typeparam name="TResult"></typeparam>
582-
/// <param name="sql"></param>
583-
/// <param name="parameters"></param>
584-
/// <returns></returns>
585-
/// <summary>
586-
/// new SqlParameter("@tableName",TableName)
587-
/// </summary>
588-
/// <typeparam name="TResult"></typeparam>
589-
/// <param name="sql"></param>
590-
/// <param name="parameters"></param>
591-
/// <returns></returns>
592-
public virtual List<TEntity> RunProc(string sql, params SqlParameter[] parameters)
593-
{
594-
foreach (var item in parameters)
595-
{
596-
if ((item as DbParameter).Value == null)
597-
{
598-
(item as DbParameter).Value = DBNull.Value;
599-
}
600-
}
601-
if (parameters != null && parameters.Count() > 0)
602-
{
603-
sql = sql + " " + string.Join(",",
604-
parameters.
605-
Select(x => ((DbParameter)x).ParameterName + (((DbParameter)x).Direction.ToString() == "Output" ? " Output" : "")));
606-
}
607-
return null;
608-
// return DBSet.FromSql($"{sql}", parameters).ToList();
609-
}
610-
579+
611580
public virtual int ExecuteSqlCommand(string sql, params SqlParameter[] sqlParameters)
612581
{
613582
return DbContext.Database.ExecuteSqlRaw(sql, sqlParameters);
614583
}
615584

616585
public virtual List<TEntity> FromSql(string sql, params SqlParameter[] sqlParameters)
617586
{
618-
return null;
619-
// return DBSet.FromSql(sql, sqlParameters).ToList();
587+
return DBSet.FromSqlRaw(sql, sqlParameters).ToList();
588+
}
589+
590+
/// <summary>
591+
/// 执行sql
592+
/// 使用方式 FormattableString sql=$"select * from xx where name ={xx} and pwd={xx1} ",
593+
/// FromSqlInterpolated内部处理sql注入的问题,直接在{xx}写对应的值即可
594+
/// 注意:sql必须 select * 返回所有TEntity字段,
595+
/// </summary>
596+
/// <param name="formattableString"></param>
597+
/// <returns></returns>
598+
public virtual IQueryable<TEntity> FromSqlInterpolated([NotNull] FormattableString sql)
599+
{
600+
//DBSet.FromSqlInterpolated(sql).Select(x => new { x,xxx}).ToList();
601+
return DBSet.FromSqlInterpolated(sql);
620602
}
621603

622604
}

开发版dev/Vue.NetCore/Vue.Net/VOL.Core/BaseProvider/IRepository.cs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -256,15 +256,21 @@ void AddRange<T>(IEnumerable<T> entities, bool saveChanges = false)
256256

257257
Task<int> SaveChangesAsync();
258258

259-
//执行存储过程
260-
List<TEntity> RunProc(string sql, params SqlParameter[] pamrs);
259+
261260

262261
int ExecuteSqlCommand(string sql, params SqlParameter[] sqlParameters);
263262

264263
List<TEntity> FromSql(string sql, params SqlParameter[] sqlParameters);
265264

265+
/// <summary>
266+
/// 执行sql
267+
/// 使用方式 FormattableString sql=$"select * from xx where name ={xx} and pwd={xx1} ",
268+
/// FromSqlInterpolated内部处理sql注入的问题,直接在{xx}写对应的值即可
269+
/// 注意:sql必须 select * 返回所有TEntity字段,
270+
/// </summary>
271+
/// <param name="formattableString"></param>
272+
/// <returns></returns>
273+
IQueryable<TEntity> FromSqlInterpolated([System.Diagnostics.CodeAnalysis.NotNull] FormattableString sql);
266274

267-
268-
269275
}
270276
}

开发版dev/Vue.NetCore/Vue.Net/VOL.Core/BaseProvider/RepositoryBase.cs

Lines changed: 17 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Collections.Generic;
66
using System.Data.Common;
77
using System.Data.SqlClient;
8+
using System.Diagnostics.CodeAnalysis;
89
using System.Linq;
910
using System.Linq.Expressions;
1011
using System.Reflection;
@@ -575,48 +576,29 @@ public virtual Task<int> SaveChangesAsync()
575576
{
576577
return EFContext.SaveChangesAsync();
577578
}
578-
/// <summary>
579-
/// new SqlParameter("@tableName",TableName)
580-
/// </summary>
581-
/// <typeparam name="TResult"></typeparam>
582-
/// <param name="sql"></param>
583-
/// <param name="parameters"></param>
584-
/// <returns></returns>
585-
/// <summary>
586-
/// new SqlParameter("@tableName",TableName)
587-
/// </summary>
588-
/// <typeparam name="TResult"></typeparam>
589-
/// <param name="sql"></param>
590-
/// <param name="parameters"></param>
591-
/// <returns></returns>
592-
public virtual List<TEntity> RunProc(string sql, params SqlParameter[] parameters)
593-
{
594-
foreach (var item in parameters)
595-
{
596-
if ((item as DbParameter).Value == null)
597-
{
598-
(item as DbParameter).Value = DBNull.Value;
599-
}
600-
}
601-
if (parameters != null && parameters.Count() > 0)
602-
{
603-
sql = sql + " " + string.Join(",",
604-
parameters.
605-
Select(x => ((DbParameter)x).ParameterName + (((DbParameter)x).Direction.ToString() == "Output" ? " Output" : "")));
606-
}
607-
return null;
608-
// return DBSet.FromSql($"{sql}", parameters).ToList();
609-
}
610-
579+
611580
public virtual int ExecuteSqlCommand(string sql, params SqlParameter[] sqlParameters)
612581
{
613582
return DbContext.Database.ExecuteSqlRaw(sql, sqlParameters);
614583
}
615584

616585
public virtual List<TEntity> FromSql(string sql, params SqlParameter[] sqlParameters)
617586
{
618-
return null;
619-
// return DBSet.FromSql(sql, sqlParameters).ToList();
587+
return DBSet.FromSqlRaw(sql, sqlParameters).ToList();
588+
}
589+
590+
/// <summary>
591+
/// 执行sql
592+
/// 使用方式 FormattableString sql=$"select * from xx where name ={xx} and pwd={xx1} ",
593+
/// FromSqlInterpolated内部处理sql注入的问题,直接在{xx}写对应的值即可
594+
/// 注意:sql必须 select * 返回所有TEntity字段,
595+
/// </summary>
596+
/// <param name="formattableString"></param>
597+
/// <returns></returns>
598+
public virtual IQueryable<TEntity> FromSqlInterpolated([NotNull] FormattableString sql)
599+
{
600+
//DBSet.FromSqlInterpolated(sql).Select(x => new { x,xxx}).ToList();
601+
return DBSet.FromSqlInterpolated(sql);
620602
}
621603

622604
}

0 commit comments

Comments
 (0)