C#实体框架-双重关系
我不熟悉实体框架和ASP.Net。我目前正在自己做一个小项目,我正试图实现收件箱功能。来自收件箱的邮件有发送者和接收者,这是用双重关系表示的。这是我到目前为止所做的,但由于某些原因,接收器总是空的: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
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();
演示您如何查询数据库演示您如何查询数据库谢谢!成功了。我现在觉得自己很愚蠢,那是个明显的错误。我觉得我遗漏了更复杂的东西,没有注意到这个非常简单的错误。伙计,我觉得自己很笨。非常感谢!不,不,我们都这么做。这不会是你第一次或最后一次进入视野:)橡皮鸭编程是有原因的!别傻了!简单的“抓住”错过,下次你忘记,你会忘记,这将是你检查的第一件事谢谢!成功了。我现在觉得自己很愚蠢,那是个明显的错误。我觉得我遗漏了更复杂的东西,没有注意到这个非常简单的错误。伙计,我觉得自己很笨。非常感谢!不,不,我们都这么做。这不会是你第一次或最后一次进入视野:)橡皮鸭编程是有原因的!别傻了!错过简单的“抓住你了”,下次你忘记的时候,你会忘记,这将是你检查的第一件事