基本上,我有一个将表单保存到数据库的操作,然后将用户重定向到列表。从该列表中,用户可以选择一些操作。
其中一个动作是必不可少的,我希望用户在创建对象后直接传递到此直接,但是,由于第一个对象的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个小时才能发布答案。
除非我弄错了 - 在这种情况下,请有人告诉我!......看起来Entity Framework会自动更新您传递的对象。
当我传递form
对象时,在调用SaveChanges
时,它会自动设置表单对象的ID。
所以,我所需要的只是:
//Excerpt
db.form.Add(ViewModel);
return RedirectToAction("Stage2", new {id = ViewModel.id));
答案 0 :(得分:0)
试试这个:
form ViewModel = new form();
// Add all your operations on the ViewModel object
db.AddToform(ViewModel);
db.SaveChanges();
//int id = ViewModel.id;
return RedirectToAction("Stage2", new {id = ViewModel.id));
调用“SaveChanges”方法后,ViewModel id属性会更新
答案 1 :(得分:0)
除非我弄错了 - 在这种情况下,请有人告诉我!......看起来Entity Framework会自动更新您传递的对象。
当我传递一个表单对象时,在调用SaveChanges时,它会自动设置表单对象的ID。
所以,我所需要的只是:
//Excerpt
db.form.Add(ViewModel);
return RedirectToAction("Stage2", new {id = ViewModel.id));