2

汎用リポジトリから汎用取得メソッドを変更しようとしています。しかし、代わりにこれを渡すために、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();
            }
4

1 に答える 1