2015-08-31 133 views
5

你好我正在開始一個ASP.Net項目,我正在關注微軟的培訓營。我試圖讓一個REST請願書,我發佈的API,並且我得到了一個異常:實體框架.net:「名稱值應該是有效的導航屬性名稱。」

的ForeignKeyAttribute財產「QuestionId」在類型 「PlataformaTest.Models.AnswerModel」是無效的。在依賴類型 'PlataformaTest.Models.AnswerModel'上未找到導航 屬性'OptionModel'。 Name值應該是一個有效的 導航屬性 名「」 exceptionType。「:」 System.InvalidOperationException」

順便說一句,我不是跟隨訓練鍛鍊; Tibial一字不差,我已經改變了一些名字所以,只是試圖找出如何將所有從零的過程。

任何幫助和指導是非常感謝,謝謝。

回答

21

好吧,我已經解決了這個問題。萬一有人有同樣的問題,這裏是問題和答案:

我有我的東西,例如:

namespace PlataformaTest.Models 
{ 
    public class AnswerModel 
    { 
     public int Id { get; set; } 

     public string UserId { get; set; } 

     [ForeignKey("OptionModel"), Column(Order = 0)] 
     public int QuestionId { get; set; } 

     [ForeignKey("OptionModel"), Column(Order = 1)] 
     public int OptionId { get; set; } 

     [JsonIgnore] 
     public virtual OptionModel OptionModelEx { get; set; } 
    } 
} 

但我發現,那

ForeignKey("OptionModel") 

必須具有「虛擬」變量同名。像這樣:

namespace PlataformaTest.Models 
{ 
    public class AnswerModel 
    { 
     public int Id { get; set; } 

     public string UserId { get; set; } 

     [ForeignKey("OptionModel"), Column(Order = 0)] 
     public int QuestionId { get; set; } 

     [ForeignKey("OptionModel"), Column(Order = 1)] 
     public int OptionId { get; set; } 

     [JsonIgnore] 
     public virtual OptionModel OptionModel { get; set; } 
    } 
} 

我以爲它必須有類的名稱,但它沒有。它查找映射實體的外鍵的對象的名稱。

+2

向上1指出導航是「虛擬」參考。 – Catchops

+0

感謝你節省了我的時間:) – usman