Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架:排除导航属性_C#_Sql_Asp.net_.net_Entity Framework - Fatal编程技术网

C# 实体框架:排除导航属性

C# 实体框架:排除导航属性,c#,sql,asp.net,.net,entity-framework,C#,Sql,Asp.net,.net,Entity Framework,我使用的是EntityFramework6,我想检索一个具有多个导航属性的实体。我不想找回其中一个,我也没有找到一个方法来实现这一点 这是我的模型: 全尺寸图像: 我想检索会话实体的所有导航属性,讨论除外。 所以我做了: using (var context = new ModelContainer()) { context.Database.Log = msg => Trace.WriteLine(msg);

我使用的是EntityFramework6,我想检索一个具有多个导航属性的实体。我不想找回其中一个,我也没有找到一个方法来实现这一点

这是我的模型:

全尺寸图像:

我想检索会话实体的所有导航属性,讨论除外。 所以我做了:

        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);
        }
但我希望实体框架能够提供一种排除实体字段的方法。

我最终这样做了:

          var session = await
                context.SessionSet.Select(a => new
                {
                    Host = a.Host,
                    Identifier = a.Identifier,
                    Destination = a.Destination,
                    Positions = a.Positions,
                    Sentinelles = a.Sentinelles,
                    Id = a.Id,
                    Code = a.Code,
                    Notifications = a.Notifications,
                    Status = a.Status,
                    Transportation = a.Transportation
                }).FirstOrDefaultAsync(a => a.Identifier == sessionIdentifier);
            var result = await Json(session).ExecuteAsync(new CancellationToken());

我真的不明白你的意思。默认情况下,EF将排除这些导航属性。顺便说一句,你想做什么?只需包含你需要的那些,其余的你就拿不到了。如果循环引用有问题,请使用DTO's@Rahul我想选择我的会话实体,但它附带了它的所有导航属性(包括我不想检索的讨论)。所以我想找到一种排除导航属性的方法。如果我执行context.SessionSet.FirstOrDefaultAsync(…),我的请求将选择所有内容。@bbouget Include用于听起来好像需要对不同类型的模型进行一些研究。您正在使用数据模型,但希望投影到DTO中,可能用作ViewModel。此外,还可以考虑使用AutoMapper帮助在不同型号之间进行转换。它使生活变得更加简单。这是对匿名DTO的投影。出于文档和互操作性的目的,您可能希望提取一个具体类型并映射到该类型。