Я пытаюсь изменить свой общий метод извлечения из моего общего репозитория. Но я хочу, вместо того, чтобы передать строку для includeproperties, чтобы передать это: params Expression<Func<TEntity, object>>[] includeProperties = null
Дело в том, когда я называю этот метод:EntityFramework Общий репозиторий, несколько включают?
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:
не работает, не принимается, кто-нибудь знает, почему, или если я делаю что-то неправильно. Я хочу, чтобы возможность DonT пройти 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();
}
Что вы делаете, это ужасная практика! Я расскажу вам об этом. Вы открываете свой API для всех, включая вас, чтобы злоупотреблять. – DarthVader
'includeProperties' вводится как строка, и все же вы пытаетесь отправить на него лямбда-выражения. –
Да, я знаю, что мне нужно изменить тип строки, а также способ включить их в мой запрос ... но я хочу включить компиляцию .. если вы знаете, что я имею в виду. – user2528557