1

我是新與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的Step類。 我知道我能做到這一點

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(); 

但這種方式我不是檢索工作流實體。

我想知道是否有可能做這樣的事情「自動」使用EF來檢索具有步驟和下一步名稱的工作流程實體。

我希望這很清楚。提前

回答

2

感謝您可以包括這樣的匿名類型工作流程的實體:

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

你可能要考慮這樣的方式建模Workflow實體,它有兩個導航性能到Step。一個用於stepID外鍵,另一個用於nextStepID外鍵。這將使您的查詢更簡單。看看this question

+0

我想過改變我的模型,但是,就像你發佈的鏈接一樣,我需要使用Fluent API,因爲我是EF新手,我不習慣使用Fluent API,所以我需要理解這首先要知道如何使用和檢索我想要的信息。我稍後再看。謝謝你的幫助!! –

+0

不客氣。 –

+1

只是爲了讓你知道:使用流利的API工程完美! ;) –