Сущность объекта и внешний ключ - PullRequest
0 голосов
/ 09 января 2011

Я использую Entity Framework с базой данных sqlserver.
Таблица, представленная EntityObject, содержит внешние ключи для других таблиц.
Например:

ArticleID|ArticleTitle|ArticleBody|CategoryID (key to another table)  

Я использую этот запрос для возврата объекта Enity:

 public Article GetArticleById(int id)
 {
        var article = Articlerctx.Articles.Where(o=>o.ArticleID==id).FirstOrDefault();          
        return article;
 }

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

Нужно ли мне определять новый класс для этой цели (класс, имеющий соответствующие поля)?

и вернуть его как:

 public ArticleFull GetArticleById(int id)
 {
    var ret = (from article in Articlerctx.Articles
                  select new ArticleFull
                  {
                     ArticleID = article.ArticleID,
                     Title = article.Title,
                     CategoryTitle = article.Articles_Categories.Title,
                   }).Where(o => o.ArticleID == id).FirstOrDefault();
     return ret;
 }

Было бы безумно определять новые классы для каждой области ...

Ответы [ 2 ]

0 голосов
/ 09 января 2011

Если я правильно понял, тогда вам нужно включить отложенная загрузка в вашем EF (по умолчанию это правда).

Если вы используете опцию LazyLoading, вы можете получить доступ к значениям справочной таблицы, например,

           EntityContext Context = new EntityContext();

           Context.ContextOptions.LazyLoadingEnabled = True;//by default it is true

           var article = Articlerctx.Articles.Where(o=>o.ArticleID==id).FirstOrDefault();          

           Article.Category.Id or any other field from category.

Если вы не хотите использовать опцию LazyLoading (), тогда ответ от @naspinski будет работать.

0 голосов
/ 09 января 2011

Попробуйте использовать расширение .Include () .

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