Фильтрация EntityDataSource по значению ассоциации
-
03-07-2019 - |
Вопрос
Мне очень нравится Entity Framework, но есть некоторые ключевые моменты, которые вызывают у меня трудности.Может ли кто-нибудь сказать мне, как фильтровать EntityDataSource в столбце Association?EF скрывает значения FK и вместо этого имеет свойство Association.Учитывая сущность Person с ассоциацией PersonType, я ожидал бы, что что-то подобное будет работать, если я хочу отфильтровать свою сущность Person по типу:
GridDataSource.EntityTypeFilter = "it.PersonType.PersonTypeID = 1";
или
GridDataSource.Where = "it.PersonType.PersonTypeID = '1'";
или даже
GridDataSource.WhereParameters.Add(new Parameter("it.PersonType.PersonTypeID", DbType.Object, "1"));
но ничего из этого не работает.Кто-нибудь знает, как это сделать?
Решение
Я думаю, что ответ, который вы ищете, включает использование метода Include, например:
entities.it.Include("PersonType").Where(a => a.PersonType.PersonTypeID = '1');
Другие советы
Пробовали ли вы применить фильтр в памяти с помощью LINQ?(или, возможно, против базы данных?)
var personType = new PersonType { Id = 1 };
var query = PersonDataSource.Where(p => p.PersonType.Equals(personType));
// use this query as the DataSource for your GridView
Должен признать, что я не делал ничего подобного, но я использовал этот трюк для обновления/создания объекта без предварительной загрузки связанных объектов.