2015-04-20 62 views
1

我有一個模型有兩個字段有一個外鍵連接到不同的表。他們有不同的名字,我無法弄清楚如何讓這種關係發揮作用。MVC 4外鍵屬性

這是我的兩個對象。 VisitorHome Teams是我在設置關係時遇到的問題。

我得到的錯誤是:

「無法檢索「Models.Game的元數據的 ForeignKeyAttribute財產VisitorID上鍵入‘Models.Game’不是 有效的導航。屬性'Team'在依賴 類型'Models.Game'上找不到。名稱值應該是有效的導航屬性 name。「

public class Team 
{ 
    public Int64 TeamID { get; set; } 

    [Required(ErrorMessage = "{0} is required")] 
    [Display(Name = "Team Name")] 
    public string Name { get; set; } 

    [Required(ErrorMessage = "{0} is required")] 
    [Display(Name = "League Name")] 
    [ForeignKey("League")] 
    public Int64 LeagueID { get; set; } 

    public virtual League League { get; set; } 
} 

public class Game 
{ 
    public Int64 GameID { get; set; } 

    [Required(ErrorMessage = "{0} is required")] 
    [Display(Name = "Season Name")] 
    [ForeignKey("Season")] 
    public Int64 SeasonID { get; set; } 

    public virtual Season Season { get; set; } 

    [Required(ErrorMessage = "{0} is required")] 
    [DataType(DataType.DateTime)] 
    [Display(Name = "Game Time")] 
    public DateTime Time { get; set; } 

    [Required(ErrorMessage = "{0} is required")] 
    [Display(Name = "Visitor Team")] 
    [ForeignKey("Team")] 
    public Int64 VisitorID { get; set; } 

    public virtual Team Visitor { get; set; } 

    [Required(ErrorMessage = "{0} is required")] 
    [Display(Name = "Home Team")] 
    [ForeignKey("Team")] 
    public Int64 HomeID { get; set; } 

    public virtual Team Home { get; set; } 

    [Required(ErrorMessage = "{0} is required")] 
    [Display(Name = "Rink")] 
    [ForeignKey("Location")] 
    public Int64 LocationID { get; set; } 

    public virtual Location Location { get; set; } 

    public virtual List<GameEvent> GameEvents { get; set; } 
} 
+0

什麼是錯誤? &爲什麼你的主鍵是32位整數和64位的混合? – BenjaminPaul

+0

如果您刪除所有不需要的額外代碼和數據註釋將會很有幫助,因此我們更容易閱讀(比如'required'和'display') –

回答

0

更改您的FK屬性。它必須包含導航屬性名稱,而不是類型

[Required(ErrorMessage = "{0} is required")] 
    [Display(Name = "Visitor Team")] 
    [ForeignKey("Visitor")] 
    public Int64 VisitorID { get; set; } 
0

經過幾天的研究,我發現我在做什麼錯誤的遊戲模型。馬丁說,我需要使用導航屬性是正確的。我還需要將[ForeignKey]屬性放在引用屬性上,而不是ID。我列出了訪問者和家庭團隊下面的更正代碼

[Required(ErrorMessage = "{0} is required")] 
    [Display(Name = "Visitor Team")]    
    public Int64 VisitorID { get; set; } 

    [ForeignKey("VisitorID")] 
    public virtual Team Visitor { get; set; } 

    [Required(ErrorMessage = "{0} is required")] 
    [Display(Name = "Home Team")]   
    public Int64 HomeID { get; set; } 

    [ForeignKey("HomeID")] 
    public virtual Team Home { get; set; }