Я работаю с ядром EF с базой данных, и мне нужно отфильтровать дочерний атрибут. Я вижу множество сообщений в Интернете о том, как ядро EF не может сделать это легко, но всем им более 2 лет (по большей части). В некоторых сообщениях говорилось, что функциональность для этого скоро появится, но я не могу найти его.
У меня есть таблицы «Компания» и «Проект». У компании есть много проектов, но у проектов есть только одна компания. У проекта есть конечная дата, и мне нужно отфильтровать, чтобы я брал только те проекты, у которых конечная дата еще не прошла. Вот мой код:
public IEnumerable<Company> Get()
{
DateTime thisDay = DateTime.Today;
var test = _context.Company
.Include(Company => Company.Project)
.Where(obj => obj.Project.Count > 0 && obj.Project.Any(r => r.EndDate > thisDay))
.ToList();
foreach (var item in test)
{
foreach (var project in item.Project)
{
project.Company = null; //This loop removes project.Company which causes
} //an infinite self referencing loop
}
return test;
}
Странная часть этого кода - иногда он фильтрует некоторые результаты, но в других случаях он возвращает мне почти все данные. Я новичок в SQL и EF в целом. Что-то глупое, я делаю неправильно? Есть ли новый способ справиться с этим в EF core> 3.0?