我有一篇文章的以下模型。
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 :(得分: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; }
}
上面的解决方案,用于自我命名导航属性外键。 我希望有用。