【发布时间】:2026-01-06 10:10:01
【问题描述】:
基本上,我有一个将表单保存到数据库的操作,然后将用户重定向到列表。从此列表中,用户可以选择一些操作。
其中一个操作是必不可少的,我希望在创建对象后直接将用户传递给此操作,但是,由于第一个对象的 ID 尚不存在,我不确定如何传递 ID通过。
例如目前 -
//Excerpt
db.form.Add(ViewModel);
db.SaveChanges();
return RedirectToAction("List");
然后我有一个正常拉的列表,有一个链接,用户可以点击进入/stage2/(id)。
理想情况下,我希望将我的代码更改为:
//Excerpt
db.form.Add(ViewModel);
var newentry = db.SaveChanges();
return RedirectToAction("Stage2", new {id = newentry));
我已经看到以这种方式调用 SaveChanges() 会导致返回一个 int,但是,我已经尝试过,它似乎并没有提取对象的 ID,我尝试了其他一些方法,但不确定要使用的语法。
我能想到的就是分离对象,然后再次选择它并返回,但是,有没有更“巧妙”或更直接的方法呢?
编辑 - 我想我已经解决了......但是,我需要等待 7 个小时才能发布答案。
除非我弄错了 - 在这种情况下,请有人告诉我!...看起来实体框架会自动更新您传递的对象。
当我将form 对象传递给它时,在调用SaveChanges 时,它会自动设置表单对象的ID。
所以,我只需要:
//Excerpt
db.form.Add(ViewModel);
return RedirectToAction("Stage2", new {id = ViewModel.id));
【问题讨论】:
-
你是对的,一旦对象被保存(通过
SaveChanges()),EF 将填充 id - 尽管你在“摘录”代码中缺少这个。
标签: c# asp.net-mvc-3 entity-framework-4.1 ef-code-first