2011-01-09 141 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