【.Net Core從零開始前後端分離】(六)——泛型基類非同步程式設計
阿新 • • 發佈:2020-12-24
前言
這一章節學習一下泛型基類的搭建以及非同步程式設計
構建各分層的基類
1、在Blog.Core.IRepository 層中新增BASE資料夾,並新增介面 IBaseRepository.cs
public interface IBaseRepository<TEntity> where TEntity : class { Task<TEntity> QueryByID(object objId); Task<TEntity> QueryByID(object objId, bool blnUseCache = false); Task<List<TEntity>> QueryByIDs(object[] lstIds); Task<int> Add(TEntity model); Task<bool> DeleteById(object id); Task<bool> Delete(TEntity model); Task<bool> DeleteByIds(object[] ids); Task<bool> Update(TEntity model); Task<bool> Update(TEntity entity, string strWhere); Task<bool> Update(TEntity entity, List<string> lstColumns = null, List<string> lstIgnoreColumns = null, string strWhere = ""); Task<List<TEntity>> Query(); Task<List<TEntity>> Query(string strWhere); Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression); Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression, string strOrderByFileds); Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, object>> orderByExpression, bool isAsc = true); Task<List<TEntity>> Query(string strWhere, string strOrderByFileds); Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression, int intTop, string strOrderByFileds); Task<List<TEntity>> Query(string strWhere, int intTop, string strOrderByFileds); Task<List<TEntity>> Query( Expression<Func<TEntity, bool>> whereExpression, int intPageIndex, int intPageSize, string strOrderByFileds); Task<List<TEntity>> Query(string strWhere, int intPageIndex, int intPageSize, string strOrderByFileds); Task<List<TEntity>> QueryPage(Expression<Func<TEntity, bool>> whereExpression, int intPageIndex = 0, int intPageSize = 20, string strOrderByFileds = null); }
2、IAdvertisementRepository 繼承Base基類
public interface IAdvertisementRepository:IBaseRepository<Advertisement> { int Sum(int i, int j); //int Add(Advertisement model); //bool Delete(Advertisement model); //bool Update(Advertisement model); //List<Advertisement> Query(Expression<Func<Advertisement, bool>> whereExpression); }
3、在Blog.Core.Repository 層中新增BASE資料夾,並新增介面 Repository.cs
public class BaseRepository<TEntity> : IBaseRepository<TEntity> where TEntity : class, new() { private DbContext context; private SqlSugarClient db; private SimpleClient<TEntity> entityDB; public DbContext Context { get { return context; } set { context = value; } } internal SqlSugarClient Db { get { return db; } private set { db = value; } } internal SimpleClient<TEntity> EntityDB { get { return entityDB; } private set { entityDB = value; } } public BaseRepository() { DbContext.Init(BaseDBConfig.ConnectionString); DbContext.DbType = DbType.MySql; context = DbContext.GetDbContext(); db = context.Db; entityDB = context.GetEntityDB<TEntity>(db); } public async Task<TEntity> QueryByID(object objId) { return await Task.Run(() => db.Queryable<TEntity>().InSingle(objId)); } /// <summary> /// 功能描述:根據ID查詢一條資料 /// 作 者:Blog.Core /// </summary> /// <param name="objId">id(必須指定主鍵特性 [SugarColumn(IsPrimaryKey=true)]),如果是聯合主鍵,請使用Where條件</param> /// <param name="blnUseCache">是否使用快取</param> /// <returns>資料實體</returns> public async Task<TEntity> QueryByID(object objId, bool blnUseCache = false) { return await Task.Run(() => db.Queryable<TEntity>().WithCacheIF(blnUseCache).InSingle(objId)); } /// <summary> /// 功能描述:根據ID查詢資料 /// 作 者:Blog.Core /// </summary> /// <param name="lstIds">id列表(必須指定主鍵特性 [SugarColumn(IsPrimaryKey=true)]),如果是聯合主鍵,請使用Where條件</param> /// <returns>資料實體列表</returns> public async Task<List<TEntity>> QueryByIDs(object[] lstIds) { return await Task.Run(() => db.Queryable<TEntity>().In(lstIds).ToList()); } /// <summary> /// 寫入實體資料 /// </summary> /// <param name="entity">博文實體類</param> /// <returns></returns> public async Task<int> Add(TEntity entity) { var i = await Task.Run(() => db.Insertable(entity).ExecuteReturnBigIdentity()); //返回的i是long型別,這裡你可以根據你的業務需要進行處理 return (int)i; } /// <summary> /// 更新實體資料 /// </summary> /// <param name="entity">博文實體類</param> /// <returns></returns> public async Task<bool> Update(TEntity entity) { //這種方式會以主鍵為條件 var i = await Task.Run(() => db.Updateable(entity).ExecuteCommand()); return i > 0; } public async Task<bool> Update(TEntity entity, string strWhere) { return await Task.Run(() => db.Updateable(entity).Where(strWhere).ExecuteCommand() > 0); } public async Task<bool> Update(string strSql, SugarParameter[] parameters = null) { return await Task.Run(() => db.Ado.ExecuteCommand(strSql, parameters) > 0); } public async Task<bool> Update( TEntity entity, List<string> lstColumns = null, List<string> lstIgnoreColumns = null, string strWhere = "" ) { IUpdateable<TEntity> up = await Task.Run(() => db.Updateable(entity)); if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0) { up = await Task.Run(() => up.IgnoreColumns(it => lstIgnoreColumns.Contains(it))); } if (lstColumns != null && lstColumns.Count > 0) { up = await Task.Run(() => up.UpdateColumns(it => lstColumns.Contains(it))); } if (!string.IsNullOrEmpty(strWhere)) { up = await Task.Run(() => up.Where(strWhere)); } return await Task.Run(() => up.ExecuteCommand()) > 0; } /// <summary> /// 根據實體刪除一條資料 /// </summary> /// <param name="entity">博文實體類</param> /// <returns></returns> public async Task<bool> Delete(TEntity entity) { var i = await Task.Run(() => db.Deleteable(entity).ExecuteCommand()); return i > 0; } /// <summary> /// 刪除指定ID的資料 /// </summary> /// <param name="id">主鍵ID</param> /// <returns></returns> public async Task<bool> DeleteById(object id) { var i = await Task.Run(() => db.Deleteable<TEntity>(id).ExecuteCommand()); return i > 0; } /// <summary> /// 刪除指定ID集合的資料(批量刪除) /// </summary> /// <param name="ids">主鍵ID集合</param> /// <returns></returns> public async Task<bool> DeleteByIds(object[] ids) { var i = await Task.Run(() => db.Deleteable<TEntity>().In(ids).ExecuteCommand()); return i > 0; } /// <summary> /// 功能描述:查詢所有資料 /// 作 者:Blog.Core /// </summary> /// <returns>資料列表</returns> public async Task<List<TEntity>> Query() { return await Task.Run(() => entityDB.GetList()); } /// <summary> /// 功能描述:查詢資料列表 /// 作 者:Blog.Core /// </summary> /// <param name="strWhere">條件</param> /// <returns>資料列表</returns> public async Task<List<TEntity>> Query(string strWhere) { return await Task.Run(() => db.Queryable<TEntity>().WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToList()); } /// <summary> /// 功能描述:查詢資料列表 /// 作 者:Blog.Core /// </summary> /// <param name="whereExpression">whereExpression</param> /// <returns>資料列表</returns> public async Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression) { return await Task.Run(() => entityDB.GetList(whereExpression)); } /// <summary> /// 功能描述:查詢一個列表 /// 作 者:Blog.Core /// </summary> /// <param name="whereExpression">條件表示式</param> /// <param name="strOrderByFileds">排序欄位,如name asc,age desc</param> /// <returns>資料列表</returns> public async Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression, string strOrderByFileds) { return await Task.Run(() => db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).ToList()); } /// <summary> /// 功能描述:查詢一個列表 /// </summary> /// <param name="whereExpression"></param> /// <param name="orderByExpression"></param> /// <param name="isAsc"></param> /// <returns></returns> public async Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, object>> orderByExpression, bool isAsc = true) { return await Task.Run(() => db.Queryable<TEntity>().OrderByIF(orderByExpression != null, orderByExpression, isAsc ? OrderByType.Asc : OrderByType.Desc).WhereIF(whereExpression != null, whereExpression).ToList()); } /// <summary> /// 功能描述:查詢一個列表 /// 作 者:Blog.Core /// </summary> /// <param name="strWhere">條件</param> /// <param name="strOrderByFileds">排序欄位,如name asc,age desc</param> /// <returns>資料列表</returns> public async Task<List<TEntity>> Query(string strWhere, string strOrderByFileds) { return await Task.Run(() => db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToList()); } /// <summary> /// 功能描述:查詢前N條資料 /// 作 者:Blog.Core /// </summary> /// <param name="whereExpression">條件表示式</param> /// <param name="intTop">前N條</param> /// <param name="strOrderByFileds">排序欄位,如name asc,age desc</param> /// <returns>資料列表</returns> public async Task<List<TEntity>> Query( Expression<Func<TEntity, bool>> whereExpression, int intTop, string strOrderByFileds) { return await Task.Run(() => db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).Take(intTop).ToList()); } /// <summary> /// 功能描述:查詢前N條資料 /// 作 者:Blog.Core /// </summary> /// <param name="strWhere">條件</param> /// <param name="intTop">前N條</param> /// <param name="strOrderByFileds">排序欄位,如name asc,age desc</param> /// <returns>資料列表</returns> public async Task<List<TEntity>> Query( string strWhere, int intTop, string strOrderByFileds) { return await Task.Run(() => db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).Take(intTop).ToList()); } /// <summary> /// 功能描述:分頁查詢 /// 作 者:Blog.Core /// </summary> /// <param name="whereExpression">條件表示式</param> /// <param name="intPageIndex">頁碼(下標0)</param> /// <param name="intPageSize">頁大小</param> /// <param name="intTotalCount">資料總量</param> /// <param name="strOrderByFileds">排序欄位,如name asc,age desc</param> /// <returns>資料列表</returns> public async Task<List<TEntity>> Query( Expression<Func<TEntity, bool>> whereExpression, int intPageIndex, int intPageSize, string strOrderByFileds) { return await Task.Run(() => db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).ToPageList(intPageIndex, intPageSize)); } /// <summary> /// 功能描述:分頁查詢 /// 作 者:Blog.Core /// </summary> /// <param name="strWhere">條件</param> /// <param name="intPageIndex">頁碼(下標0)</param> /// <param name="intPageSize">頁大小</param> /// <param name="intTotalCount">資料總量</param> /// <param name="strOrderByFileds">排序欄位,如name asc,age desc</param> /// <returns>資料列表</returns> public async Task<List<TEntity>> Query( string strWhere, int intPageIndex, int intPageSize, string strOrderByFileds) { return await Task.Run(() => db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToPageList(intPageIndex, intPageSize)); } public async Task<List<TEntity>> QueryPage(Expression<Func<TEntity, bool>> whereExpression, int intPageIndex = 0, int intPageSize = 20, string strOrderByFileds = null) { return await Task.Run(() => db.Queryable<TEntity>() .OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds) .WhereIF(whereExpression != null, whereExpression) .ToPageList(intPageIndex, intPageSize)); } }
4、AdvertisementRepository 繼承Base基類
public class AdvertisementRepository : BaseRepository<Advertisement>,IAdvertisementRepository
{
//private DbContext context;
//private SqlSugarClient db;
//private SimpleClient<Advertisement> entityDB;
//internal SqlSugarClient Db
//{
// get { return db; }
// private set { db = value; }
//}
//public DbContext Context
//{
// get { return context; }
// set { context = value; }
//}
//public AdvertisementRepository()
//{
// DbContext.Init(BaseDBConfig.ConnectionString);
// DbContext.DbType = DbType.MySql;
// context = DbContext.GetDbContext();
// db = context.Db;
// entityDB = context.GetEntityDB<Advertisement>(db);
//}
//public int Add(Advertisement model)
//{
// //返回的i是long型別,這裡你可以根據你的業務需要進行處理
// var i = db.Insertable(model).ExecuteReturnBigIdentity();
// return i.ObjToInt();
//}
//public bool Delete(Advertisement model)
//{
// var i = db.Deleteable(model).ExecuteCommand();
// return i > 0;
//}
//public List<Advertisement> Query(Expression<Func<Advertisement, bool>> whereExpression)
//{
// return entityDB.GetList(whereExpression);
//}
public int Sum(int i, int j)
{
return i + j;
}
//public bool Update(Advertisement model)
//{
// //這種方式會以主鍵為條件
// var i = db.Updateable(model).ExecuteCommand();
// return i > 0;
//}
}
5、在Blog.Core.IService 層中新增BASE資料夾,並新增介面 IBaseService.cs
public interface IBaseServices<TEntity> where TEntity : class
{
Task<TEntity> QueryByID(object objId);
Task<TEntity> QueryByID(object objId, bool blnUseCache = false);
Task<List<TEntity>> QueryByIDs(object[] lstIds);
Task<int> Add(TEntity model);
Task<bool> DeleteById(object id);
Task<bool> Delete(TEntity model);
Task<bool> DeleteByIds(object[] ids);
Task<bool> Update(TEntity model);
Task<bool> Update(TEntity entity, string strWhere);
Task<bool> Update(TEntity entity, List<string> lstColumns = null, List<string> lstIgnoreColumns = null, string strWhere = "");
Task<List<TEntity>> Query();
Task<List<TEntity>> Query(string strWhere);
Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression);
Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression, string strOrderByFileds);
Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, object>> orderByExpression, bool isAsc = true);
Task<List<TEntity>> Query(string strWhere, string strOrderByFileds);
Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression, int intTop, string strOrderByFileds);
Task<List<TEntity>> Query(string strWhere, int intTop, string strOrderByFileds);
Task<List<TEntity>> Query(
Expression<Func<TEntity, bool>> whereExpression, int intPageIndex, int intPageSize, string strOrderByFileds);
Task<List<TEntity>> Query(string strWhere, int intPageIndex, int intPageSize, string strOrderByFileds);
Task<List<TEntity>> QueryPage(Expression<Func<TEntity, bool>> whereExpression, int intPageIndex = 0, int intPageSize = 20, string strOrderByFileds = null);
}
6、IAdvertisementServices 繼承Base基類
public interface IAdvertisementServices: IBaseServices<Advertisement>
{
int Sum(int i, int j);
//int Add(Advertisement model);
//bool Delete(Advertisement model);
//bool Update(Advertisement model);
//List<Advertisement> Query(Expression<Func<Advertisement, bool>> whereExpression);
}
7、在Blog.Core.Service 層中新增BASE資料夾,並新增介面 BaseServices.cs
public class BaseServices<TEntity> : IBaseServices<TEntity> where TEntity : class, new()
{
public IBaseRepository<TEntity> baseDal = new BaseRepository<TEntity>();
public async Task<TEntity> QueryByID(object objId)
{
return await baseDal.QueryByID(objId);
}
/// <summary>
/// 功能描述:根據ID查詢一條資料
/// 作 者:AZLinli.Blog.Core
/// </summary>
/// <param name="objId">id(必須指定主鍵特性 [SugarColumn(IsPrimaryKey=true)]),如果是聯合主鍵,請使用Where條件</param>
/// <param name="blnUseCache">是否使用快取</param>
/// <returns>資料實體</returns>
public async Task<TEntity> QueryByID(object objId, bool blnUseCache = false)
{
return await baseDal.QueryByID(objId, blnUseCache);
}
/// <summary>
/// 功能描述:根據ID查詢資料
/// 作 者:AZLinli.Blog.Core
/// </summary>
/// <param name="lstIds">id列表(必須指定主鍵特性 [SugarColumn(IsPrimaryKey=true)]),如果是聯合主鍵,請使用Where條件</param>
/// <returns>資料實體列表</returns>
public async Task<List<TEntity>> QueryByIDs(object[] lstIds)
{
return await baseDal.QueryByIDs(lstIds);
}
/// <summary>
/// 寫入實體資料
/// </summary>
/// <param name="entity">博文實體類</param>
/// <returns></returns>
public async Task<int> Add(TEntity entity)
{
return await baseDal.Add(entity);
}
/// <summary>
/// 更新實體資料
/// </summary>
/// <param name="entity">博文實體類</param>
/// <returns></returns>
public async Task<bool> Update(TEntity entity)
{
return await baseDal.Update(entity);
}
public async Task<bool> Update(TEntity entity, string strWhere)
{
return await baseDal.Update(entity, strWhere);
}
public async Task<bool> Update(
TEntity entity,
List<string> lstColumns = null,
List<string> lstIgnoreColumns = null,
string strWhere = ""
)
{
return await baseDal.Update(entity, lstColumns, lstIgnoreColumns, strWhere);
}
/// <summary>
/// 根據實體刪除一條資料
/// </summary>
/// <param name="entity">博文實體類</param>
/// <returns></returns>
public async Task<bool> Delete(TEntity entity)
{
return await baseDal.Delete(entity);
}
/// <summary>
/// 刪除指定ID的資料
/// </summary>
/// <param name="id">主鍵ID</param>
/// <returns></returns>
public async Task<bool> DeleteById(object id)
{
return await baseDal.DeleteById(id);
}
/// <summary>
/// 刪除指定ID集合的資料(批量刪除)
/// </summary>
/// <param name="ids">主鍵ID集合</param>
/// <returns></returns>
public async Task<bool> DeleteByIds(object[] ids)
{
return await baseDal.DeleteByIds(ids);
}
/// <summary>
/// 功能描述:查詢所有資料
/// 作 者:AZLinli.Blog.Core
/// </summary>
/// <returns>資料列表</returns>
public async Task<List<TEntity>> Query()
{
return await baseDal.Query();
}
/// <summary>
/// 功能描述:查詢資料列表
/// 作 者:AZLinli.Blog.Core
/// </summary>
/// <param name="strWhere">條件</param>
/// <returns>資料列表</returns>
public async Task<List<TEntity>> Query(string strWhere)
{
return await baseDal.Query(strWhere);
}
/// <summary>
/// 功能描述:查詢資料列表
/// 作 者:AZLinli.Blog.Core
/// </summary>
/// <param name="whereExpression">whereExpression</param>
/// <returns>資料列表</returns>
public async Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression)
{
return await baseDal.Query(whereExpression);
}
/// <summary>
/// 功能描述:查詢一個列表
/// 作 者:AZLinli.Blog.Core
/// </summary>
/// <param name="whereExpression">條件表示式</param>
/// <param name="strOrderByFileds">排序欄位,如name asc,age desc</param>
/// <returns>資料列表</returns>
public async Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, object>> orderByExpression, bool isAsc = true)
{
return await baseDal.Query(whereExpression, orderByExpression, isAsc);
}
public async Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression, string strOrderByFileds)
{
return await baseDal.Query(whereExpression, strOrderByFileds);
}
/// <summary>
/// 功能描述:查詢一個列表
/// 作 者:AZLinli.Blog.Core
/// </summary>
/// <param name="strWhere">條件</param>
/// <param name="strOrderByFileds">排序欄位,如name asc,age desc</param>
/// <returns>資料列表</returns>
public async Task<List<TEntity>> Query(string strWhere, string strOrderByFileds)
{
return await baseDal.Query(strWhere, strOrderByFileds);
}
/// <summary>
/// 功能描述:查詢前N條資料
/// 作 者:AZLinli.Blog.Core
/// </summary>
/// <param name="whereExpression">條件表示式</param>
/// <param name="intTop">前N條</param>
/// <param name="strOrderByFileds">排序欄位,如name asc,age desc</param>
/// <returns>資料列表</returns>
public async Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression, int intTop, string strOrderByFileds)
{
return await baseDal.Query(whereExpression, intTop, strOrderByFileds);
}
/// <summary>
/// 功能描述:查詢前N條資料
/// 作 者:AZLinli.Blog.Core
/// </summary>
/// <param name="strWhere">條件</param>
/// <param name="intTop">前N條</param>
/// <param name="strOrderByFileds">排序欄位,如name asc,age desc</param>
/// <returns>資料列表</returns>
public async Task<List<TEntity>> Query(
string strWhere,
int intTop,
string strOrderByFileds)
{
return await baseDal.Query(strWhere, intTop, strOrderByFileds);
}
/// <summary>
/// 功能描述:分頁查詢
/// 作 者:AZLinli.Blog.Core
/// </summary>
/// <param name="whereExpression">條件表示式</param>
/// <param name="intPageIndex">頁碼(下標0)</param>
/// <param name="intPageSize">頁大小</param>
/// <param name="intTotalCount">資料總量</param>
/// <param name="strOrderByFileds">排序欄位,如name asc,age desc</param>
/// <returns>資料列表</returns>
public async Task<List<TEntity>> Query(
Expression<Func<TEntity, bool>> whereExpression,
int intPageIndex,
int intPageSize,
string strOrderByFileds)
{
return await baseDal.Query(
whereExpression,
intPageIndex,
intPageSize,
strOrderByFileds);
}
/// <summary>
/// 功能描述:分頁查詢
/// 作 者:AZLinli.Blog.Core
/// </summary>
/// <param name="strWhere">條件</param>
/// <param name="intPageIndex">頁碼(下標0)</param>
/// <param name="intPageSize">頁大小</param>
/// <param name="intTotalCount">資料總量</param>
/// <param name="strOrderByFileds">排序欄位,如name asc,age desc</param>
/// <returns>資料列表</returns>
public async Task<List<TEntity>> Query(
string strWhere,
int intPageIndex,
int intPageSize,
string strOrderByFileds)
{
return await baseDal.Query(
strWhere,
intPageIndex,
intPageSize,
strOrderByFileds);
}
public async Task<List<TEntity>> QueryPage(Expression<Func<TEntity, bool>> whereExpression,
int intPageIndex = 0, int intPageSize = 20, string strOrderByFileds = null)
{
return await baseDal.QueryPage(whereExpression,
intPageIndex = 0, intPageSize, strOrderByFileds);
}
}
8、AdvertisementService 繼承Base基類
public class AdvertisementServices : BaseServices<Advertisement>,IAdvertisementServices
{
public IAdvertisementRepository dal = new AdvertisementRepository();
public int Sum(int i, int j)
{
return dal.Sum(i, j);
}
//public int Add(Advertisement model)
//{
// return dal.Add(model);
//}
//public bool Delete(Advertisement model)
//{
// return dal.Delete(model);
//}
//public List<Advertisement> Query(Expression<Func<Advertisement, bool>> whereExpression)
//{
// return dal.Query(whereExpression);
//}
//public bool Update(Advertisement model)
//{
// return dal.Update(model);
//}
}
二、執行專案,並除錯介面
這個時候,需要把介面改成非同步請求方式:
// GET: api/Blog/5
/// <summary>
/// 根據id獲取資料
/// </summary>
/// <param name="id">引數id</param>
/// <returns></returns>
[HttpGet("{id}", Name = "Get")]
public async Task<List<Advertisement>> Get(int id)
{
IAdvertisementServices advertisementServices = new AdvertisementServices();
return await advertisementServices.Query(d => d.Id == id);
}
Http返回200,一切正常
結語
這一章節抽取了泛型基類,並且將請求改為非同步請求。