在使用 Entity Framework 5 进行更新/创建时,我无法正确保存我的关系。
我有一个带有 EF 5 的新 MVC 4.0 项目,我正在使用代码优先迁移。
我的模型看起来像这样。
public class Blog
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
}
public class Post
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Text{ get; set; }
public virtual Blog Blog { get; set; }
}
我的迁移在我的帖子表中正确创建了一个 Blog_Id 列。
后控制器:
var db = new AppContext();
ViewBag.Blogs = new SelectList(db.Blogs.ToList(), "ID", "Title", post.Blog_Id);
帖子视图:
<p>
@Html.LabelFor(model => model.Blog.Id, "Blog")
@Html.DropDownListFor(model => model.Blog.Id,
(SelectList)ViewBag.Blogs, "Select blog", new { })
@Html.ValidationMessageFor(model => model.Blog.Id)
</p>
但是,当我创建/更新帖子时,模型在保存之前具有正确的关系,但 Blog_Id 列不会持久保存到数据库中。
我的更新功能看起来像这样。
var db = new AppContext();
db.Posts.Attach(post);
db.Entry(post).State = EntityState.Modified;
db.SaveChanges();
任何帮助将不胜感激。我看过的所有文档和示例似乎都已过时(主要使用 EF4),而且 MSDN 文档似乎是自引用的(EF 说要查看文档,文档说要查看 EF 站点)并且难以导航。