汎用リポジトリから汎用取得メソッドを変更しようとしています。しかし、代わりにこれを渡すために、includeproperties の文字列を渡したい:params Expression<Func<TEntity, object>>[] includeProperties = null
問題は、このメソッドを呼び出すときです:
public virtual IEnumerable<TEntity> Retrieve(Expression<Func<TEntity, bool>> filter = null, params Expression<Func<TEntity, object>>[] includeProperties = null)
たとえば、次のようにします。TEntityExample.Retrieve(filter: c=>c.Id=Id, includeProperties:c=> c.propertynav1, e=> e.propertynav1.propertynav3, e=> e.Prop4)
または、ナビゲーション プロパティが必要ない場合TEntityExample.Retrieve(filter: c=>c.Id=Id)
しかし、なぜ機能しないのincludeProperties:
か、受け入れられないのか、誰かが理由を知っているのか、それとも私が何か間違ったことをしているのかはわかりません。includeProperties を渡さないか、指定して渡す可能性が欲しいincludeProperties:
public virtual IEnumerable<TEntity> Retrieve(Expression<Func<TEntity, bool>> filter = null, string includeProperties = "")
{
IQueryable<TEntity> query = _dbSet;
if (filter != null)
{
query = query.Where(filter);
}
if (!string.IsNullOrEmpty(includeProperties))
{
foreach (var includeProperty in includeProperties.Split
(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
{
query = query.Include(includeProperty);
}
}
return query.ToList();
}