Атрибуты объекта, недоступные в LINQ to Entities - PullRequest
0 голосов
/ 30 ноября 2011

Вот моя проблема с упрощенным примером.

У меня есть две сущности, смоделированные из базы данных SQL Server:

  1. Заказы (столбцы доступны = OrderID, PackageCount, ManufactureDate, ShipDate, StatusID) Первичный ключ = OrderID)
  2. OrderRecipients (столбцы доступны = RecipientID, FirstName, LastName, Address, City, Zip, Country, OrderID; Внешний ключ = OrderID)

Существует отношение [1 ко многим] между Orders и OrderRecipients.Один заказ может иметь несколько получателей.

Я пытаюсь извлечь получателей заказов с помощью следующего кода.

  var allmyrecipients = from o in mycontext.Orders
                        where (o.SiteID.Equals("NYC") || o.SiteID.Equals("SFO"))
                        select o.OrderRecipients;

Однако, когда я пытаюсь получить имена получателей со следующим кодом:

 foreach (var recipient in allmyrecipients)
 {
   Console.WriteLine(recipient.FirstName);
 }

FirstName и другие атрибуты получателя недоступны в раскрывающемся списке Intellisense.вниз.Я получаю ошибку «не содержит определения FirstName».

Почему это и каково лекарство?Что я здесь не так делаю?Я работаю с VS 2010, Entity Framework 4.

Спасибо, что нашли время, чтобы помочь.

1 Ответ

1 голос
/ 30 ноября 2011

РЕДАКТИРОВАТЬ: я преобразовал это в нечто, что должно работать, используя SelectMany .Дайте этому шанс:

var orders = from o in mycontext.Orders
    where (o.SiteID.Equals("NYC") || o.SiteID.Equals("SFO"))
    select o;

foreach (var recipient in orders.SelectMany(r => r.OrderRecipients)) 
{
    Console.WriteLine(recipient.FirstName); 
}
...