在实体中填充关系对象

本文关键字:关系 对象 填充 实体 | 更新日期: 2023-09-27 18:25:31

我有一个类看起来像这样:

public partial class Defect
{
    public int DefectID { get; set; }
    public string Title { get; set; }
    public virtual DefectStatus DefectStatus { get; set; }
    public virtual Developer Developer { get; set; }
    public virtual Project Project { get; set; }
}

当我称之为:

    var defect = db.Defects.Find(id);


如何使用Project表中的关系数据填充Project

目前,我正在执行以下defect.Project来填充defect.Project

     var defect = db.Defects.Find(id);
     defect.Project = db.Projects.Find(defect.ProjectID);

但我想知道是否有更好的方法来完成同样的事情?

在实体中填充关系对象

如果您在请求Project时仍在db上下文中,则(因为您已将属性标记为Virtual),Project将延迟加载。如果您在数据库上下文之外,那么您需要在上下文中加载它(就像您正在做的那样)。

但是,您可以不使用Virtual关键字或在查询中使用Include:来加载项目实体

db.Defects.Include("Project").Where(d => d.DefectId.Equals(id));

这看起来是加载实体的最佳参考。