2012-01-27 7 views
0

Создание приложения C# с использованием EF 4.1 с базой данных First. Мой вопрос сосредотачивается вокруг использования методов расширения для возврата значений через объект DbContext.Entity Framework 4.1 DbContext Расширение частичных классов

Мои сущности были созданы как частичные классы генератором DbContext. У меня есть таблицы и связанные с ними таблицы Менеджеры и через объект контекста Я могу выполнять запросы LINQ и проекты доступа и назначенный менеджер проектов. Если таблица Manager имеет поля firstname и lastname, как бы я написал свое расширение как свойство или метод, чтобы объединить поля первого и последнего имени, чтобы при запросе проекта и использовании отношения менеджера свойство FullName возвращает комбинированное значение?

Этот пример имеет переменную _ проектов заселенный со списком проектов, созданных с помощью LINQ запроса:

Fields["manager"].Value = _projects[i].Project.ProjectManager.FullName 

Я makethe FullName собственности в метод и передать идентификатор для менеджера, однако Wouldn 't, которые превращают его в дополнительный запрос? Спасибо за помощь.

ответ

1

Если вы знаете, что вы всегда будете получать доступ к ProjectManager навигации собственности, вы можете включить его в исходном запросе с помощью метода Include

var projects = (from p in ctx.Projects 
       select p) 
        .Include(p => p.ProjectManager) 
        .ToList(); 

Затем вы можете добавить следующее свойство к вашему Manager класс (в отдельном файле, чем генерируемое)

public string FullName 
{ 
    get { return FirstName + " " + LastName; } 
} 

И доступ к нему с помощью

var manager = projects[0].ProjectManager.FullName; 

Если я пропустил ваш вопрос, не могли бы вы привести пример того, как будет выглядеть ваш код с использованием предложенного метода расширения?

+0

Спасибо Брайсу за ответ. Теперь я понимаю, что первое и последнее имя доступны, потому что я расширяю частичный класс Manager. Собственность, которую вы написали, находится на месте. –

Смежные вопросы