У меня есть две таблицы, и я собираюсь объединить и отфильтровать их с помощью Entity Framework Core в базе данных SQLite.
Я использую следующие запросы:
public async Task<IEnumerable<Person>> GetPerson(Guid key, int type)
{
var mainTable = dbContext.Person.ToListAsync(); //470 entities
var detailTable = dbContext.PersonDetail.ToListAsync(); //490 entities
var filterDetail = dbContext.PersonDetail.Where(pd=> pd.DetailID == key).ToList(); //160 entities
var query = from person in dbContext.Person
join personDetail in dbContext.PersonDetail on person.ID equals personDetail.PersonID
where personDetail.DetailID == key && personDetail.DetailType == type
select person;
return await query.ToListAsync(); //yields 0 (!!!!) entities
}
Если я удаляю person.DetailID == key
условие, я все еще получаю некоторые результаты.
Если я запрашиваю оба объекта в списке, DetailID
равен key
:
var query = from person in dbContext.Person
join personDetail in dbContext.PersonDetail on person.ID equals personDetail.PersonID
where personDetail.DetailType == type
select new {person, personDetail};
var result = query.ToListAsync();
return null; //result[0].personDetail.DetailID == key yields TRUE!!!
Что мне делатьс этим?Вызывает ли проблема асинхронная часть?