SqlManager.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using Abp.Dependency;
  2. using Abp.Domain.Repositories;
  3. using Abp.EntityFrameworkCore.Repositories;
  4. using Microsoft.EntityFrameworkCore;
  5. using VberZero.BaseSystem.Roles;
  6. using VberZero.Data;
  7. using VberZero.DomainService;
  8. using VberZero.DomainService.Sqls;
  9. namespace VberAdmin.DomainService.Sqls;
  10. public class SqlManager : VzDomainServiceBase, ISqlManager, ISingletonDependency
  11. {
  12. public SqlManager(IRepository<Role> repository)
  13. {
  14. Repository = repository;
  15. }
  16. private IRepository<Role> Repository { get; }
  17. /// <summary>
  18. /// 执行给定的命令
  19. /// </summary>
  20. /// <param name="sql">命令字符串</param>
  21. /// <param name="parameters">要应用于命令字符串的参数</param>
  22. /// <returns>执行命令后由数据库返回的结果</returns>
  23. public int Execute(string sql, params object[] parameters)
  24. {
  25. return Repository.GetDbContext().Database.ExecuteSqlRaw(sql, parameters);
  26. }
  27. public async Task<int> ExecuteAsync(string sql, params object[] parameters)
  28. {
  29. return await Repository.GetDbContext().Database.ExecuteSqlRawAsync(sql, parameters);
  30. }
  31. /// <summary>
  32. /// 创建一个原始 SQL 查询,该查询将返回给定泛型类型的元素。
  33. /// </summary>
  34. /// <typeparam name="T">查询所返回对象的类型</typeparam>
  35. /// <param name="sql">SQL 查询字符串</param>
  36. /// <param name="parameters">要应用于 SQL 查询字符串的参数</param>
  37. /// <returns></returns>
  38. public List<T> SqlQuery<T>(string sql, params object[] parameters) where T : class, new()
  39. {
  40. return Repository.GetDbContext().Database.SqlQuery<T>(sql, parameters).ToList();
  41. }
  42. public async Task<List<T>> SqlQueryAsync<T>(string sql, params object[] parameters) where T : class, new()
  43. {
  44. var result = Repository.GetDbContext().Database.SqlQuery<T>(sql, parameters).ToList();
  45. return await Task.FromResult(result);
  46. }
  47. }