Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.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#_Asp.net_Entity Framework - Fatal编程技术网

C# 包括导航属性

C# 包括导航属性,c#,asp.net,entity-framework,C#,Asp.net,Entity Framework,我有一个类对话,它有一个导航属性列出消息,每一条消息都有一个导航属性用户所有者,现在当我执行类似操作时 foreach (var item in conversation.Messages.ToList()) { //Do something with item.Owner.Name } 它会为每一个项目访问数据库。所有者 在conversation.messages.ToList()?存储库中获取邮件时,如何同时加载邮件

我有一个类对话,它有一个导航属性
列出消息
,每一条消息都有一个导航属性
用户所有者
,现在当我执行类似操作时

        foreach (var item in conversation.Messages.ToList())
        {
            //Do something with item.Owner.Name
        }
它会为每一个项目访问数据库。所有者


conversation.messages.ToList()

存储库中获取邮件时,如何同时加载邮件所有者您的对话如下:

return (from c in context.Conversation
       where <your where clause>
       select c).Include(x => x.Messages.Select(m => m.Owner)).FirstOrDefault();
return(在context.Conversation中从c返回
哪里
选择c).Include(x=>x.Messages.select(m=>m.Owner)).FirstOrDefault();

在存储库中,您的对话如下:

return (from c in context.Conversation
       where <your where clause>
       select c).Include(x => x.Messages.Select(m => m.Owner)).FirstOrDefault();
return(在context.Conversation中从c返回
哪里
选择c).Include(x=>x.Messages.select(m=>m.Owner)).FirstOrDefault();

要加载多个嵌套级别,有两个选项:

  • 使用方法。在您的情况下,它将是:

    var query= context.Conversations.Include("Messages.Owner");
    
    var query= context.Conversations.Include(c=>c.Messages.Select(m=>m.Owner));
    
    此方法接收要包含在查询结果中的相关对象的路径作为参数

  • 采用可拓方法。在您的情况下,它将是:

    var query= context.Conversations.Include("Messages.Owner");
    
    var query= context.Conversations.Include(c=>c.Messages.Select(m=>m.Owner));
    
    在这种情况下,需要将一个lambda表达式作为参数传递,该表达式表示要包含的路径。IMHO这是更好的选择,因为它是强类型的,如果您更改了其中一个属性的名称,您将有一个编译错误


要加载多个嵌套级别,您有两个选项:

  • 使用方法。在您的情况下,它将是:

    var query= context.Conversations.Include("Messages.Owner");
    
    var query= context.Conversations.Include(c=>c.Messages.Select(m=>m.Owner));
    
    此方法接收要包含在查询结果中的相关对象的路径作为参数

  • 采用可拓方法。在您的情况下,它将是:

    var query= context.Conversations.Include("Messages.Owner");
    
    var query= context.Conversations.Include(c=>c.Messages.Select(m=>m.Owner));
    
    在这种情况下,需要将一个lambda表达式作为参数传递,该表达式表示要包含的路径。IMHO这是更好的选择,因为它是强类型的,如果您更改了其中一个属性的名称,您将有一个编译错误


导航属性是否标记为虚拟?我认为这会导致延迟加载一个渴望加载的示例:
var messages=context.Conversations.Include(“messages”).ToList()导航属性是否标记为虚拟?我认为这会导致延迟加载一个渴望加载的示例:
var messages=context.Conversations.Include(“messages”).ToList()