0..1-1關係我有一個問題想正確地配置在EF的關係。我首先使用EF代碼從現有數據庫生成類。第一個表保存的指令列表,第二認爲,每個指令在狀態的記錄如何創建EF6
表(簡體):
Instruction
-----------
InstructionID
CurrentInstructionStateHistoryID
InstructionStateHistory
-----------------------
InstructionStateHistoryID
InstructionID
State
所以,你可以看到有2個關係表之間 - 基於InstructionID的一對多關係,我不感興趣,因此刪除了屬性。第二種關係基於CurrentInstructionStateHistoryID屬性,該屬性指向指令的「當前」狀態。
的類如下:
public partial class Instruction
{
[Key]
public int InstructionID { get; set; }
public int? CurrentInstructionStateHistoryID { get; set; }
public virtual CurrentInstructionStateHistory InstructionStateHistory { get; set; }
}
public partial class InstructionStateHistory
{
[Key]
public int InstructionStateHistoryID { get; set; }
public int InstructionID { get; set; }
public string State { get; set; }
public virtual Instruction tblInstruction { get; set; }
}
這裏的流暢API設置定義關係:
modelBuilder.Entity<InstructionStateHistory>()
.HasRequired(e => e.tblInstruction)
.WithOptional(e => e.CurrentInstructionStateHistory);
所以,這一切編譯和運行。但是,當我得到一點這樣的代碼:
Instruction instruction = await _dal.InstructionRepository.Find(claimID);
InstructionStateHistory history = i.CurrentInstructionStateHistory;
我可以看到,該指令被正確填充,讓我們說的編號爲1234。當我檢查InstructionStateHistory對象,我想看是它的InstructionID是1234,而是我所看到的是,它的InstructionStateHistoryID,即是的主鍵,是1234和它涉及到完全不同的指令。 不知何故,我需要告訴EF Instruction.CurrentInstructionStateHistoryID鏈接到InstructionStateHistory.InstructionStateHistoryID。 我已經嘗試了數據註釋和流暢設置的許多組合,但一直無法找到實際工作的組合,要麼我得到上述結果或運行時錯誤。任何幫助感激地接受!