我有一個小問題。但我不知道為什么它不起作用。而且我不知道如何通過郵遞員發布所有 ID。
我正在使用通用存盤庫的作業單元。我想將 int[] ids 發送到我的控制器。我不想發送物體。我今天搜索了很多。我改變了我的代碼。但是現在有什么問題嗎?
這是我的repostiroy:
public async Task DeleteRangeAsync(Expression<Func<T, bool>> predicate)
{
IQueryable<T> query = _dbSet.Where(predicate);
await Task.Run(() => { _dbSet.RemoveRange(query.AsNoTracking()); });
}
這是我的 KulturManager:
public async Task<IResult> HardDeleteRangeAsync(int[] ids)
{
await UnitOfWork.Kulturs.DeleteRangeAsync(c => ids.Contains(c.Id));
await UnitOfWork.SaveAsync();
return new Result(ResultStatus.Success, Messages.Info("Kultur", "HardDelete"));
}
這是我的 KulturController:
[HttpDelete("{ids}")]
public async Task<IActionResult> HardDeleteRangeAsync(int[] ids)
{
var result = await _kulturManager.HardDeleteRangeAsync(ids);
return Ok(result.Message);
}
謝謝你的幫助
uj5u.com熱心網友回復:
它是通用類。所以我使用了這個代碼:
public void DeleteRangeAsync(int[] ids)
{
_dbSet.RemoveRange(ids.Select(i => new T() { Id = i }).ToList());
}
現在,我如何在郵遞員中測驗它?我不知道如何發送許多 id。
uj5u.com熱心網友回復:
您不應該獲取所有要洗掉的物體。而是為 RemoveRange 創建存根物體。如果您沒有公共基類,則需要反射,但使用公共物體基類,您可以這樣做:
public void DeleteRange<T>(int[] ids) where T: BaseEntity, new()
{
_dbSet.RemoveRange(ids.Select(i => new T() { Id = i }).ToList());
}
或者如果該方法在泛型類中,則該方法看起來像
public void DeleteRange(int[] ids)
{
_dbSet.RemoveRange(ids.Select(i => new T() { Id = i }).ToList());
}
現在沒有理由將其標記為異步,因為它不進行任何資料庫訪問。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/404835.html
標籤:
