我使用实体框架和sqlserver数据库。
由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;
}但我也想从其他表中返回字段(join,在某些文件上,而不是全部)。
我是否需要为此定义新的类(具有对应字段的类)?
并像这样返回它:
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;
}为每个领域定义新的类是疯狂的……
发布于 2011-01-10 00:27:27
尝试使用.Include() extension。
发布于 2011-01-10 02:23:32
如果我理解正确,那么您需要在EF中启用lazy loading (默认情况下为真)。
如果使用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()选项,那么answer by @naspinski就可以了。
https://stackoverflow.com/questions/4640239
复制相似问题