我目前正在將現有存盤庫遷移到通用存盤庫。
從資料庫中檢索所有 MyEntity 串列的現有方法如下所示:
public IList<MyEntity> GetAll()
{
var list = _context.MyEntity.Include(_ => _.OtherEntity).ToList();
return list;
}
此方法將回傳所有 MyEntity 的串列,并加載它們相關的 OtherEntites。我已將存盤庫簡化為通用存盤庫,其方法如下所示:
public IList<TEntity> GetAll(params Expression<Func<TEntity, object>>[] expressions)
{
var entity = _context.Set<TEntity>();
foreach (var expression in expressions)
{
entity.Include(expression);
}
var list = entity.ToList();
return list;
}
我會這樣呼叫方法:
var myEntityList = _repository.GetAll(_ => _.OtherEntity);
但是,這似乎不會加載相關的 OtherEntites。對于可能需要也可能不需要加載相關物體的場景,我必須包含運算式引數。
有人可以解釋我哪里出錯了,為什么我的相關物體不會在新設定中加載?謝謝
uj5u.com熱心網友回復:
看起來第一個方法回傳結果,.Include()而第二個方法只是呼叫該方法,但忽略了結果。LINQ 方法通常回傳一個新集合,而不是修改現有集合。
試試這個:
public IList<TEntity> GetAll(params Expression<Func<TEntity, object>>[] expressions)
{
IQueryable<TEntity> entity = _context.Set<TEntity>();
foreach (var expression in expressions)
{
entity = entity.Include(expression);
}
var list = entity.ToList();
return list;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/465757.html
