2013-04-25 101 views
0

當我運行我的代碼優先的MVC應用程序並嘗試訪問DeveloperAccountModel詳細信息頁面或加載父對象和另一個視圖時出現以下錯誤DeveloperAccountModel集合:導航屬性「重定向」不是類型爲'DeveloperAccountModel'的聲明屬性。在這一點上,我沒有訪問屬性(它確實存在!)只是試圖加載DeveloperAccountModel。MVC實體框架中的一對多關係出錯4

[Table("sitedata")] 
public class DeveloperAccountModel 
{ 
    [Required] 
    [RegularExpression("^[0-9]*$")] 
    [Display(Name = "User id")] 
    [Key] 
    [Column("_rowid")] 
    public long RowId { get; internal set; } 

    // Other properties removed 

    [Display(Name = "Redirects")] 
    [NotMapped] 
    [InverseProperty("DeveloperAccount")] 
    public List<SiteRedirectModel> Redirects { get; internal set; } 
} 

再依賴模型

[Table("siteredirects")] 
public partial class SiteRedirectModel 
{ 
    [Key] 
    [Column("_rowid")] 
    [Display(Name = "RowId")] 
    public int RowId { get; internal set; } 

    [Column("_siteid")] 
    [Display(Name = "Developer account id")] 
    public long DeveloperAccountModelId { get; internal set; } 

    [NotMapped] 
    [ForeignKey("DeveloperAccountModelId")] 
    public virtual DeveloperAccountModel DeveloperAccount { get; internal set; } 
} 

我已經嘗試了各種教程這麼多的變化和樣本,包括其他時間,其中本或類似的錯誤發生,但我沒有看到很簡單的東西。任何人都可以幫忙嗎?

回答

1

只需從兩個屬性中刪除[NotMapped]屬性。所以你的屬性定義應該是這樣的:

// In SiteRedirectModel 
[ForeignKey("DeveloperAccountModelId")] 
public virtual DeveloperAccountModel DeveloperAccount { get; internal set; } 




// In DeveloperAccountModel 
[Display(Name = "Redirects")] 
[InverseProperty("DeveloperAccount")] 
public List<SiteRedirectModel> Redirects { get; internal set; } 
+0

這已經刪除了錯誤,非常感謝。我沒有在視圖中獲取任何數據,但我已經使用了這個@ Html.DisplayFor(model => model.Redirects.FirstOrDefault()。RowId)是否正確,我需要做些什麼來確保重定向被加載? (這就是爲什麼我刪除虛擬,使其急切加載)。謝謝 – Lukos 2013-04-25 15:38:44

+0

從頭開始!我在控制器中添加了包含(),它都可以工作。 – Lukos 2013-04-25 15:40:17

+0

@Lukos添加'虛擬'關鍵字。或者使用'Include' – Kamyar 2013-04-25 15:41:33