首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Entityobject和外键

Entityobject和外键
EN

Stack Overflow用户
提问于 2011-01-10 00:22:49
回答 2查看 124关注 0票数 0

我使用实体框架和sqlserver数据库。

由EntityObject表示的表包含指向另一个表的外键。

例如:

代码语言:javascript
复制
ArticleID|ArticleTitle|ArticleBody|CategoryID (key to another table)  

我使用这个查询来返回Enityobject:

代码语言:javascript
复制
 public Article GetArticleById(int id)
 {
        var article = Articlerctx.Articles.Where(o=>o.ArticleID==id).FirstOrDefault();          
        return article;
 }

但我也想从其他表中返回字段(join,在某些文件上,而不是全部)。

我是否需要为此定义新的类(具有对应字段的类)?

并像这样返回它:

代码语言:javascript
复制
 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;
 }

为每个领域定义新的类是疯狂的……

EN

回答 2

Stack Overflow用户

发布于 2011-01-10 00:27:27

尝试使用.Include() extension

票数 0
EN

Stack Overflow用户

发布于 2011-01-10 02:23:32

如果我理解正确,那么您需要在EF中启用lazy loading (默认情况下为真)。

如果使用LazyLoading选项,则可以访问引用表的值,例如,

代码语言:javascript
复制
           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()选项,那么answer by @naspinski就可以了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4640239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档