我正在使用实体框架4。我需要更新2个不同的表。首先,需要比较文本框中输入的值与数据库的值。如果文本框输入的值不存在或与数据库值不同,则更新2个不同的表。表1包含用户详细信息,表2包含修改后的详细信息。 假设我更新了电话号码字段,那么更新后的数据应保存在用户详细信息表中,而修改后的归档详细信息应保存在日志文件中,例如修改者,日期和文件名。
UserLog表
查看:
@model ApiSample.Models.TestData
@{
ViewBag.Title = "About";
}
<h2>@ViewBag.Title.</h2>
@using (Html.BeginForm("About", "Home", FormMethod.Post))
{
<form>
<p>Use this area to provide additional information.</p>
<p>@Html.LabelFor(model => model.Address) @Html.TextBoxFor(model => model.Address)</p>
<p>@Html.LabelFor(model => model.PhoneNumber) @Html.TextBoxFor(model => model.PhoneNumber)</p>
<button type="submit" title="Submit">Upload Image</button>
</form>
}
型号:
public partial class TestData
{
public int ID { get; set; }
public string Address { get; set; }
public string PhoneNumber { get; set; }
}
public partial class UserLog
{
public int ID { get; set; }
public string UserName { get; set; }
public string ModifiedFiledName{ get; set; }
public Nullable<System.DateTime> Date { get; set; }
}
控制器:
//我不知道可以用这种方式完成。
[HttpPost]
public ActionResult About(TestData testdata, UserLog log)
{
if (ModelState.IsValid)
{
// insert into Userlog table
var inputUser = ConfigurationManager.AppSettings["INPUT_USER"].ToString().ToLower();
var usr = _db.UserLogs.SingleOrDefault(u => u.ID == id);
string date = DateTime.Now;
usr.UserName = inputUser;
usr.ModifiedFiledName = PhoneNumber;
usr.Date = date;
// update TestData table
_db.TestDatas.Add(testdata);
_db.Entry(testdata).State = EntityState.Added;
_db.SaveChanges();
}
return RedirectToAction("About");
}
如何更新同一控制器类中的2个表?
答案 0 :(得分:0)
应该执行以下操作:
[HttpPost]
public ActionResult About(TestData testdata) //No need for UserLog model here
{
if (ModelState.IsValid)
{
// insert into Userlog table
var inputUser = ConfigurationManager.AppSettings["INPUT_USER"].ToString().ToLower();
var usr = _db.UserLogs.SingleOrDefault(u => u.ID == id);
string date = DateTime.Now;
usr.UserName = inputUser;
usr.ModifiedFiledName = PhoneNumber;
usr.Date = date;
_db.UserLogs.Add(usr);
_db.Entry(usr).State = EntityState.Added;
// update TestData table
_db.TestDatas.Add(testdata);
_db.Entry(testdata).State = EntityState.Added;
//Save both tables
_db.SaveChanges();
}
return RedirectToAction("About");
}