Entity Framework - 根据外键取不同的值

Entity Framework - Retrieve different values according to foreign keys

我是 EF 新手,遇到过这种情况: 类:

public class Step
{
    public int ID { get; set; }

    public string name { get; set; }
}

public class Workflow
{
    public int ID { get; set; }
    public int stepID { get; set; }
    public int nextStepID { get; set; }

    public virtual Step Step
}

我想知道的是,是否有办法根据 stepID 和 nextStepID 从 class Step 中获取 "name"。 我知道我能做到

var result = (from Workflow in db.Workflow
              join Step in db.Step on Workflow.stepID equals Step.ID               
              join nextStep in db.Step on Workflow.nextStepID equals nextStep.ID
              select new
              {
                 nameStep = Step.name,
                 nameNextStep = nextStep.name
              }
             ).ToList();

但这样我就不会检索工作流实体。

我想知道是否可以 "automatically" 使用 EF 检索具有“步骤”和“下一步”名称的工作流实体。

我希望这很清楚。

提前致谢

您可以像这样在匿名类型中包含 WorkFlow 实体:

select new
{
    Workflow = Workflow,
    nameStep = Step.name,    
    nameNextStep = nextStep.name
}

您可能要考虑以这样的方式对 Workflow 实体建模,使其具有两个 Step 的导航属性。一个用于 stepID 外键,一个用于 nextStepID 外键。这将使您的查询更简单。看看this question.