在使用ABP時會遇到新資料和舊資料相互結合,我們不單單要用到一個資料庫,還會用到多個資料庫,由于我們使用了ABP框架,所以就要學習框架中的知識點,進入代碼環節,
平時我們都是繼承EntityFramework下的DbContext,在ABP中需要繼承AbpDbContext或者其他ABP封裝的背景關系,我們需要在此框架上進行進一步的擴充;
1.創建一個背景關系類
在ABP的EntityFramework類別庫中創建
public class LQDBContext : AbpDbContext, IRepository
{
public LQDBContext()
: base("LQDBContext")
{
}
}
2.創建一些操作資料庫的類別庫和介面
在EntityFramework檔案夾添加
//操作資料庫的幫助方法
public class SqlHelper : ISqlHelper, ITransientDependency
{
private readonly IDbContextProvider<LQDBContext> _dbContext;
public SqlHelper(IDbContextProvider<LQDBContext> dbContext)
{
_dbContext= dbContext;
}
/// <summary>
/// 獲取資料的長度
/// </summary>
/// <param name="sql">sql陳述句</param>
/// <param name="parameters">需要的引數</param>
/// <returns></returns>
public int Count(string sql, params object[] parameters)
{
return _dbContext.GetDbContext().Database.ExecuteSqlCommand(sql, parameters);
}
/// <summary>
/// 獲取資料
/// </summary>
/// <typeparam name="T">回傳資料格式的類</typeparam>
/// <param name="sql">sql陳述句</param>
/// <param name="parameters">需要的引數</param>
/// <returns></returns>
public IQueryable<T> GetData<T>(string sql, params object[] parameters)
{
return _dbContext.GetDbContext().Database.SqlQuery<T>(sql, parameters).AsQueryable<T>();
}
}
//再創建一個介面類
public interface ISqlHelper
{
/// <summary>
/// 通過sql獲取資料的長度
/// </summary>
/// <param name="sql"></param>
/// <param name="parameters"></param>
/// <returns>一個長度資料</returns>
int Count(string sql, params object[] parameters);
/// <summary>
/// 通過sql獲取相應的集合
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="sql"></param>
/// <param name="parameters"></param>
/// <returns>一個集合</returns>
IQueryable<T> GetData<T>(string sql, params object[] parameters);
}
3.注冊IOC容器
在EntityFramework類別庫下找到XXXXXXDataModule類找到Initialize方法,并且注冊我們的類;
public override void Initialize()
{
IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
IocManager.Resolve();
}
4.在Application類別庫添加相應方法和介面
//創建一個XXXXAppService
public class AllLogAppService: IAllLogAppService
{
private readonly SqlHelper sqlHelper;
public AllLogAppService(SqlHelper _sqlHelper)
{
sqlHelper = _sqlHelper;
}
/// <summary>
/// 查詢數量
/// </summary>
/// <param name="sql"></param>
/// <param name="WhereSql"></param>
/// <returns></returns>
public int Count(string sql, params object[] WhereSql)
{
return sqlHelper.Count(sql, WhereSql);
}
public IQueryable<T> GetData<T>(string sql, params object[] WhereSql)
{
return sqlHelper.GetData<T>(sql, WhereSql);
}
}
//相應介面
public interface IAllLogAppService
{
int Count(string sql, params object[] WhereSql);
IQueryable<T> GetData<T>(string sql, params object[] WhereSql);
}
5.使用方法
private readonly IAllLogAppService allLogAppService;
public IndexController(IAllLogAppService _allLogAppService)
{
allLogAppService = _allLogAppService;
}
public ActionResult Index(){
var list= allLogAppService.GetData<Authorization.Users.User>("select * from AbpUsers");
return View();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/237721.html
標籤:其他
上一篇:LeetCode SQL 1693. Daily Leads and Partners【SELECT】簡單
下一篇:我想知道偽亂數的事。
