Я использую ASP.NET MVC2 с EF4. Мне нужно создать POCO для двух моих классов PersonP и AddressP, которые соответствуют их «сложным» классам EF4 (которые включают в себя такие вещи, как свойства навигации и OnPropertyChanged ()). Отображение только PersonP само по себе работает нормально, но PersonP содержит AddressP (внешний ключ) - как мне сопоставить это с помощью выражения IQueryable?
Вот что я пробовал:
class AddressP
{
int Id { get; set; }
string Street { get; set; }
}
class PersonP
{
int Id { get; set; }
string FirstName { get; set; }
AddressP Address { get; set; }
}
IQueryable<PersonP> persons = _repo.QueryAll()
.Include("Address")
.Select(p => new PersonP
{
Id = p.Id,
FirstName = p.FirstName,
//Address = p.Address <-- I'd like to do this, but p.Address is Address, not AddressP
//Address = (p.Address == null) ? null :
//new AddressP <-- does not work; can't use CLR object in LINQ runtime expression
//{
// Id = p.Address.Id,
// Street = p.Address.Street
//}
});
Без .Include("Address")
Я бы не стал ничего извлекать из таблицы адресов, это правильно?
Как мне сопоставить Address
с AddressP
внутри PersonP
, используя оператор Select()
выше?
Спасибо.