2011-01-09 55 views
0

我用SQLSERVER數據庫實體框架。
由EntityObject表示的表包含到其他表的外鍵。
例如:Entityobject鍵和外鍵

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

我用這個查詢返回Enityobject:

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

但我要回也從其他表中的字段(加入,在一些的Fileds不是全部)。

我是否需要爲此目的定義新類(具有相應字段的類)?

並返回它喜歡:

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; 
} 

這將是瘋狂的deine新的類,每場...

回答

0

嘗試使用.Include() extension

+0

工作的,但它是有效的,足以包括整個表只是一個領域,我需要?或者是使用相同的新類選擇新... – asker 2011-01-09 20:33:15

0

如果我理解正確,那麼您需要在您的EF中啓用lazy loading(默認情況下爲true)。

如果使用惰性加載選項,那麼你可以訪問參考表的值一樣,

  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. 

如果你不想使用惰性加載()選項,然後回答@naspinski會工作。

+0

存在上下文中沒有EnableLzyLoading財產...無論如何,如果你不包括其他表 – asker 2011-01-09 20:28:38