Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.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/33.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,我不熟悉实体框架和ASP.Net。我目前正在自己做一个小项目,我正试图实现收件箱功能。来自收件箱的邮件有发送者和接收者,这是用双重关系表示的。这是我到目前为止所做的,但由于某些原因,接收器总是空的: public class UserDB { public int Id { get; set; } public String Username { get; set; } public String Email { get; set; } public String

我不熟悉实体框架和ASP.Net。我目前正在自己做一个小项目,我正试图实现收件箱功能。来自收件箱的邮件有发送者和接收者,这是用双重关系表示的。这是我到目前为止所做的,但由于某些原因,接收器总是空的:

public class UserDB
{
    public int Id { get; set; }
    public String Username { get; set; }
    public String Email { get; set; }
    public String Password {get; set;}

    [InverseProperty("From")]
    public virtual List<MessageDB> Incoming { get; set; }
    [InverseProperty("To")]
    public virtual List<MessageDB> Outgoing { get; set; }
}
正如我所说的,出于某种原因,接收方(从MessageDB发送)总是空的,但我已经检查了数据库,其中的一切都正常


谢谢

要使LazyLoading工作,必须将模型上的非基本属性声明为虚拟属性。这使得实体框架能够用它的魔力来实现它们

[InverseProperty("Incoming")]
public virtual UserDB From { get; set; }
[InverseProperty("Outgoing")]
public virtual UserDB To { get; set; }

要使懒散加载工作,必须将模型上的非基本属性声明为虚拟。这使得实体框架能够用它的魔力来实现它们

[InverseProperty("Incoming")]
public virtual UserDB From { get; set; }
[InverseProperty("Outgoing")]
public virtual UserDB To { get; set; }

您可以延迟加载相关实体,如下所示:

[InverseProperty("Incoming")]
public virtual UserDB From { get; set; }
[InverseProperty("Outgoing")]
public virtual UserDB To { get; set; }
建议在从数据库获取时立即加载实体

var userDb = context.MessageDBs.Include(x => x.From).Include(x => x.To).FirstOrDefault();

您可以延迟加载相关实体,如下所示:

[InverseProperty("Incoming")]
public virtual UserDB From { get; set; }
[InverseProperty("Outgoing")]
public virtual UserDB To { get; set; }
建议在从数据库获取时立即加载实体

var userDb = context.MessageDBs.Include(x => x.From).Include(x => x.To).FirstOrDefault();

演示您如何查询数据库演示您如何查询数据库谢谢!成功了。我现在觉得自己很愚蠢,那是个明显的错误。我觉得我遗漏了更复杂的东西,没有注意到这个非常简单的错误。伙计,我觉得自己很笨。非常感谢!不,不,我们都这么做。这不会是你第一次或最后一次进入视野:)橡皮鸭编程是有原因的!别傻了!简单的“抓住”错过,下次你忘记,你会忘记,这将是你检查的第一件事谢谢!成功了。我现在觉得自己很愚蠢,那是个明显的错误。我觉得我遗漏了更复杂的东西,没有注意到这个非常简单的错误。伙计,我觉得自己很笨。非常感谢!不,不,我们都这么做。这不会是你第一次或最后一次进入视野:)橡皮鸭编程是有原因的!别傻了!错过简单的“抓住你了”,下次你忘记的时候,你会忘记,这将是你检查的第一件事