【发布时间】:2016-01-03 13:18:34
【问题描述】:
我正在使用 Entity Framework 6,我想检索一个具有多个导航属性的实体。我不想检索其中一个,也没有找到实现此目的的方法。
这是我的模型:
全尺寸图片:http://i.imgur.com/KFdsTVU.jpg?1
我想检索 Session 实体的所有导航属性,但 Discussions 除外。 所以我做了:
using (var context = new ModelContainer())
{
context.Database.Log = msg => Trace.WriteLine(msg);
var session = await
context.SessionSet.FirstOrDefaultAsync(a => a.Identifier == sessionIdentifier);
var result = await Json(session).ExecuteAsync(new CancellationToken());
return ResponseMessage(result);
}
但我希望实体框架有一个排除实体字段的方法。
【问题讨论】:
-
真的没有让你明白。默认情况下,EF 将排除这些导航属性。顺便说一句,你想做什么?
-
只需
Include()您需要的那些,其余的您不会获取。如果您在循环引用方面遇到问题,请使用 DTO -
@Rahul 我想选择我的会话实体,但它带有所有导航属性(包括我不想检索的讨论)。所以我想找到一种方法来排除导航属性。如果我执行 context.SessionSet.FirstOrDefaultAsync(...),我的请求将选择所有内容。
-
@bbougot Include 用于Eager Loading
-
听起来您需要对不同类型的模型进行一些研究。您正在使用数据模型,但想要投影到 DTO,可能用作 ViewModel。此外,考虑使用 AutoMapper 来帮助在不同模型之间进行转换。它让生活更轻松。
标签: c# sql asp.net .net entity-framework