SqlExecuter.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using System;
  2. using System.Linq;
  3. using System.Threading.Tasks;
  4. using Abp.Dependency;
  5. using Abp.EntityFramework;
  6. using ShwasherSys.EntityFramework;
  7. namespace ShwasherSys.EntityFramework
  8. {
  9. public class SqlExecuter : ISqlExecuter, ITransientDependency
  10. {
  11. private readonly IDbContextProvider<ShwasherDbContext> _dbContextProvider;
  12. public SqlExecuter(IDbContextProvider<ShwasherDbContext> dbContextProvider)
  13. {
  14. _dbContextProvider = dbContextProvider;
  15. }
  16. /// <summary>
  17. /// 执行给定的命令
  18. /// </summary>
  19. /// <param name="sql">命令字符串</param>
  20. /// <param name="parameters">要应用于命令字符串的参数</param>
  21. /// <returns>执行命令后由数据库返回的结果</returns>
  22. public int Execute(string sql, params object[] parameters)
  23. {
  24. return _dbContextProvider.GetDbContext().Database.ExecuteSqlCommand(sql, parameters);
  25. }
  26. /// <summary>
  27. /// 执行给定的命令
  28. /// </summary>
  29. /// <param name="sql">命令字符串</param>
  30. /// <param name="parameters">要应用于命令字符串的参数</param>
  31. /// <returns>执行命令后由数据库返回的结果</returns>
  32. public async Task<int> ExecuteAsync(string sql, params object[] parameters)
  33. {
  34. try
  35. {
  36. var context = _dbContextProvider.GetDbContext();
  37. return await context.Database.ExecuteSqlCommandAsync(sql, parameters);
  38. }
  39. catch (Exception e)
  40. {
  41. Console.WriteLine(e);
  42. throw;
  43. }
  44. }
  45. ///// <summary>
  46. ///// 执行给定的命令
  47. ///// </summary>
  48. ///// <param name="sql">命令字符串</param>
  49. ///// <param name="parameters">要应用于命令字符串的参数</param>
  50. ///// <returns>执行命令后由数据库返回的结果</returns>
  51. //public async Task<int> ExecuteAsync(string sql, params object[] parameters)
  52. //{
  53. // var context = new ShwasherDbContext();
  54. // return await context.Database.ExecuteSqlCommandAsync(sql, parameters);
  55. //}
  56. /// <summary>
  57. /// 创建一个原始 SQL 查询,该查询将返回给定泛型类型的元素。
  58. /// </summary>
  59. /// <typeparam name="T">查询所返回对象的类型</typeparam>
  60. /// <param name="sql">SQL 查询字符串</param>
  61. /// <param name="parameters">要应用于 SQL 查询字符串的参数</param>
  62. /// <returns></returns>
  63. public IQueryable<T> SqlQuery<T>(string sql, params object[] parameters)
  64. {
  65. return _dbContextProvider.GetDbContext().Database.SqlQuery<T>(sql, parameters).AsQueryable();
  66. }
  67. }
  68. }