У нас есть следующие модели (сокращенно для краткости)
public class Patient
{
public int Id {get; set;
public string LastName { get; set; }
public string FirstName { get; set; }
public ICollection<Address> Addresses { get; set; } = new List<Address>();
}
public class Address
{
public int PatientId {get; set;
public string Street { get; set; }
public string Number { get; set; }
public string Zip { get; set; }
public string City { get; set; }
}
Нам нравится сопоставлять результаты хранимой процедуры (список пациентов с их адресами) с ними с помощью EF.
select
p.* ,
(select a.street from Addresses as a where a.PatientId = p.id) as addresses
from
Patients as p
where
... (a set of clauses and joins to limit the list to the desired patients)
Без дополнительного выбора для получения адресов все работает нормально, ну, за исключением того, что мы не получаем адреса.
Получаем ошибку:
Подзапрос вернул больше чем 1 значение. Это недопустимо, если подзапрос следует за =,! =, <, <=,>,> = Или когда подзапрос используется как выражение.
Есть предложения?