2012-11-26 53 views
1

我有以下模型的文章。導航屬性沒有顯示腳手架代碼第一模型在EF5 MVC4

public class Article 
{ 
    [Key] 
    public int ArticleId { get; set; } 

    [Required(ErrorMessage = "Title is required."), MaxLength(80)] 
    public string Title { get; set; } 

    [Required(ErrorMessage = "Body is required.")] 
    public string Body { get; set; } 

    public DateTime Time { get; set; } 

    public int AuthorId { get; set; } 

    // Navigation properties 
    public virtual UserProfile Author { get; set; } 
    public virtual ICollection<Tag> Tags { get; set; } 
    public virtual ICollection<Comment> Comments { get; set; } 
} 

UserProfile在MVC4標準項目的默認的extendend版本。

現在,在我的腳手架控制器/視圖中,沒有辦法輸入Author

我的數據庫(MySQL)包含一個名爲Author_UserId的字段,其類型爲int

出了什麼問題?

而且,是真的有必要對作者引用既通過導航屬性AuthorId

回答

0

這不是普通的任何表使用2個特定表的相同的外鍵。這被解釋爲數據冗餘。爲了解決這個問題沒有任何冗餘,我建議你給以下模型:

public class Article 
{ 
    [Key] 
    public int ArticleId { get; set; } 
    [Required(ErrorMessage = "Title is required."), MaxLength(80)] 
    public string Title { get; set; } 

    [Required(ErrorMessage = "Body is required.")] 
    public string Body { get; set; } 

    public DateTime Time { get; set; } 

    public int AuthorId { get; set; }//determine name of foreign key here of type primary key of navigatable table 

    // Navigation properties 
    [ForeignKey("AuthorId")] 
    public virtual UserProfile Author { get; set; }//column with name 'AuthorId' 
    public virtual ICollection<Tag> Tags { get; set; } 
    public virtual ICollection<Comment> Comments { get; set; } 
} 

上面的解決方案,用於自定義導航屬性的外鍵。 我希望有用。

+0

我已經實現了你的建議,但是我仍然在'Create'下沒有'Author'。 – kasperhj

+0

確保您使用EF的DropCreateDatabaseIfModelChanges來檢測更改。 –

+0

我在一個乾淨的項目和db上做了測試。 – kasperhj

相關問題