导航属性未显示在具有EF5 MVC4中的代码优先模型的脚手架中

时间:2012-11-26 10:50:16

标签: asp.net-mvc entity-framework

我有一篇文章的以下模型。

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

引用作者

1 个答案:

答案 0 :(得分: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; }
}

上面的解决方案,用于自我命名导航属性外键。 我希望有用。