У нас есть собственный статический класс, содержащий собственный метод .Include, который будет использоваться при использовании Entity Framework Core для вызова репозитория. Мы хотели бы, чтобы включение использовало любой предоставленный селектор, например i.Documents, как показано здесь:
private readonly IRepository _itemRepository;
var item = await _itemRepository.GetAll()
.IncludeCheckingSecurity(i => i.Documents)
.SingleAsync();
А если репозиторий определенного типа (IObjectWithSecurity), а селектор имеет определенный тип (IEnumerable IObjectWithSecurity), чтобы добавить дополнительный .Where() для фильтрации селектора по свойству, существующему в IObjectWithSecurity:
public static IIncludableQueryable IncludeCheckingSecurity(
this IQueryable source,
Expression propertySelector)
where TRepositoryType : class
{
var previousType = typeof(TRepositoryType);
var thisInclude = typeof(TThisInclude);
if (typeof(IObjectWithSecurity).IsAssignableFrom(previousType) && typeof(IEnumerable).IsAssignableFrom(thisInclude))
{
// Want to add a where to 'propertySelector' which filters it on a property within IObjectWithSecurity (which we have proved it is above)
return source.Include(propertySelector);
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... ore-includ
Добавление где к общему выражению в пользовательском Entity Framework Core .Include ⇐ C#
Место общения программистов C#
1731003928
Anonymous
У нас есть собственный статический класс, содержащий собственный метод .Include, который будет использоваться при использовании Entity Framework Core для вызова репозитория. Мы хотели бы, чтобы включение использовало любой предоставленный селектор, например i.Documents, как показано здесь:
private readonly IRepository _itemRepository;
var item = await _itemRepository.GetAll()
.IncludeCheckingSecurity(i => i.Documents)
.SingleAsync();
А если репозиторий определенного типа (IObjectWithSecurity), а селектор имеет определенный тип (IEnumerable IObjectWithSecurity), чтобы добавить дополнительный .Where() для фильтрации селектора по свойству, существующему в IObjectWithSecurity:
public static IIncludableQueryable IncludeCheckingSecurity(
this IQueryable source,
Expression propertySelector)
where TRepositoryType : class
{
var previousType = typeof(TRepositoryType);
var thisInclude = typeof(TThisInclude);
if (typeof(IObjectWithSecurity).IsAssignableFrom(previousType) && typeof(IEnumerable).IsAssignableFrom(thisInclude))
{
// Want to add a where to 'propertySelector' which filters it on a property within IObjectWithSecurity (which we have proved it is above)
return source.Include(propertySelector);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79167019/adding-a-where-to-a-generic-expression-in-a-custom-entity-framework-core-includ[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия