Entity Framework 4: выборка данных из двух таблиц и возврат на уровень представления - PullRequest
0 голосов
/ 16 июня 2011

У меня есть две таблицы, имеющие отношение 1 к 1. Одна таблица называется Person, а вторая - PersonDetails. PesonId находится в таблице PersonDetails как FK.

Я могу запросить отдельные таблицы, такие как

public static Person GetPersonById(int personId)
{
    using (var context = new REntities())
    {
    return context.Person.Where(p => p.PersonId == personId).First();
    }
}

Он используется в таком коде, как:

Person personInfo = PersonService.GetPersonById(personId);

и то же самое с PersonDetail на его ПК, т.е. PersonDetailId

Но когда мне нужно извлечь данные из двух таблиц, я не понимаю, что, как мне это сделать, и что было бы лучшим способом вернуть данные на уровень представления.

Ниже приведен код для получения Person и связывания PersonDetails записей:

from personData in context.person.Include("PersonDetail")
                                  where personData.PersonId == personId
                                  select personData;

Что такое personData здесь? Как я могу перебрать его и получить каждый элемент в коде клиента?

Спасибо.

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Когда вы получаете ваш объект Person, вы можете включить объект PersonDetails также в запрос, как этот ...

using (var context = new REntities())
{
  return context.Person.Include("PersonDetail").Where(p => p.PersonId == personId).First();
}

Теперь на стороне презентации, когда вы получите объект Person, итерируйте по каждому элементу детали человека, как это ...

from p in personInfo.PersonDetails
select p; // here p is the person detail object

Надеюсь, это поможет.

0 голосов
/ 16 июня 2011

Если вы используете Entity Framework Code First (EF 4.1), пометьте свойство PersonDetails в классе Person как virtual.Это позволит EF автоматически заполнять данные, поэтому вы можете просто набрать person.PersonDetails, чтобы получить список данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...