C# Entityobject和外键
我将实体框架与sqlserver数据库一起使用。C# Entityobject和外键,c#,entity-framework,C#,Entity Framework,我将实体框架与sqlserver数据库一起使用。 由EntityObject表示的表包含其他表的外键。 例如: ArticleID|ArticleTitle|ArticleBody|CategoryID (key to another table) 我使用此查询返回Enityobject: public Article GetArticleById(int id) { var article = Articlerctx.Articles.Where(o=>o.Ar
由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;
}
为每个领域设计新课程将是疯狂的 尝试使用。如果我理解正确,则需要在EF中启用(默认情况下为true) 如果使用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的答案将起作用。上下文中没有EnableLzyLoading属性。。。不管怎么说,如果不包含其他表,它将不起作用。这是可行的,但只包含我需要的一个字段的整个表是否足够有效?或者使用new类和select new。。。