EntityFramework5を使用した更新/作成時に関係を正しく保存できません。
EF5を使用した新しいMVC4.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サイトを見ると言う)でナビゲートするのが難しいようです。