c# - 将文本框值与数据库值进行比较并更新到不同的表中
问题描述
我正在使用实体框架 4。我需要更新 2 个不同的表。首先,需要将文本框中输入的值与数据库值进行比较。如果文本框输入的值不存在或与数据库值不同,则更新 2 个不同的表。表 1 包含用户详细信息,表 2 包含修改后的详细信息。假设我更新了电话号码字段,那么更新后的数据应保存在用户详细信息表中,修改后的归档详细信息应保存在日志文件中,如修改者、日期和归档名称。
用户日志表
看法 :
@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 个表?
解决方案
这样的事情应该这样做:
[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");
}
推荐阅读
- python - 在python中以不同格式返回日期
- android - 活动未在紧密循环中更新
- reactjs - Reactjs 中的分页范围
- assembly - 如何在avr中将int8转换为int16
- node.js - Express JS 中的验证器错误 http POST 响应
- javascript - 如何替换子元素的类?
- vue.js - Nuxt.js:无法生成路由
- javascript - 是否有某种方法可以在不使用 .includes 或 indexOf(element) 函数的情况下搜索按钮单击过滤器?
- android - 如何控制Android studio的build.gradle中的任务执行顺序?
- sql - 将具有多个 True/False 值的相关记录组合成一条记录