SqlManager.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using System.Linq;
  2. using System.Threading.Tasks;
  3. using Abp.Dependency;
  4. using Abp.Domain.Repositories;
  5. using Abp.EntityFramework.Repositories;
  6. using WeApp.Authorization.Roles;
  7. namespace WeApp.CommonManager.Sqls
  8. {
  9. public class SqlManager : ISqlManager, ISingletonDependency
  10. {
  11. public SqlManager(IRepository<Role> repository)
  12. {
  13. Repository = repository;
  14. }
  15. private IRepository<Role> Repository { get; }
  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 Repository.GetDbContext().Database.ExecuteSqlCommand(sql, parameters);
  25. }
  26. public async Task<int> ExecuteAsync(string sql, params object[] parameters)
  27. {
  28. return await Repository.GetDbContext().Database.ExecuteSqlCommandAsync(sql, parameters);
  29. }
  30. /// <summary>
  31. /// 创建一个原始 SQL 查询,该查询将返回给定泛型类型的元素。
  32. /// </summary>
  33. /// <typeparam name="T">查询所返回对象的类型</typeparam>
  34. /// <param name="sql">SQL 查询字符串</param>
  35. /// <param name="parameters">要应用于 SQL 查询字符串的参数</param>
  36. /// <returns></returns>
  37. public IQueryable<T> SqlQuery<T>(string sql, params object[] parameters)
  38. {
  39. return Repository.GetDbContext().Database.SqlQuery<T>(sql, parameters).AsQueryable();
  40. }
  41. public async Task<IQueryable<T>> SqlQueryAsync<T>(string sql, params object[] parameters)
  42. {
  43. var result = Repository.GetDbContext().Database.SqlQuery<T>(sql, parameters).AsQueryable();
  44. return await Task.FromResult(result);
  45. }
  46. }
  47. }