分层开发,2个重要的基类
基于Nebula开发的项目应该尊守必要的 分层开发职责
本文主要介绍2个重要基类的核心功能。
BaseController核心功能
- 用户身份识别
- bool IsAuthenticated 属性
- 判断当前请求是否为已登录用户
- IUserInfo GetUserInfo()
- 获取当前请求的用户身份信息
- string GetTenantId()
- 用于获取【当前用户】所属于的租户ID
- 如果是未登录用户,则会抛出异常
- bool IsAuthenticated 属性
- 数据库连接管理
- DbContext CreateMasterConnection()
- 切换到主库
- DbContext CreateAppDbConnection(string name)
- 切换到应用库
- DbContext CreateTenantConnection(string tenantId = null)
- 切换到租户库,参数为null时调用GetTenantId()
- DbContext CreateMasterConnection()
- 服务之间调用
- Task<T> SendRequestAsync<T>(HttpOption httpOption)
- 发送HTTP请求,并返回结果
- Task TransferRequestAsync(string url, string method = null)
- 将当前请求转发给一个内部服务来处理
- Task<T> SendRequestAsync<T>(HttpOption httpOption)
- HttpRequest/HttpResponse 方法封装
- string GetHeader(string name)
- void SetHeader(string name, string value)
- string GetCookie(string name)
- void SetCookie(string name, string value, TimeSpan? expiry = null)
BaseBLL核心功能
- 用户身份识别
- IUserInfo GetUserInfo()
- string GetTenantId()
- 数据库连接获取
- DbContext tntContext 属性
- 获取当前Controller中的【最近】打开的【租户库】连接对象
- DbContext masterContext 属性
- 获取当前Controller中的【最近】打开的【主库】连接对象
- DbContext tntContext 属性
- 通用 Insert/Update/Delete
- Task<long> InsertAsync<T>(T entity, DbContext dbContext)
- Task<int> UpdateAsync<T>(T entity, DbContext dbContext)
- Task<int> DeleteAsync<T>(object key, DbContext dbContext)
- Task<T> GetByKeyAsync<T>(object key, DbContext dbContext)