我有一个非常具体的问题。以下是两种型号appointments.cs
和valid_clients.cs
。这两个模型都映射到两个数据库表。
任命.cs.它引用 valid_clients.cs
public partial class appointments
{
public int appt_client_id { get; set; }
public int customer_id { get; set; }
[Key]
public int appt_id { get; set; }
public DateTime appt_date_time { get; set; }
[ForeignKey("appt_client_id")]
public virtual valid_clients Client { get; set; }
}
valid_clients.cs
public partial class valid_clients
{
[Key]
public int client_id { get; set; }
[Required]
[StringLength(30)]
public string client_name { get; set; }
public bool valid_client { get; set; }
}
现在,我需要更新数据库中appointments
表中的一条记录。我在控制器方法中有以下代码进行更新。但是此代码也会valid_clients
表中插入一条新记录,然后在 appointments
中插入一条新记录。
[HttpPost]
public ActionResult Confirm1(appointments appointment,string submit)
{
using (var db1 = new appointmentContext()){
appointments app = db1.appointments.Single(d => d.appt_id == appointment.appt_id);
app = appointment;
app.appt_status = "RESCHED";
app.time_stamp = DateTime.Now;
//Saving the changes in the database
try
{
db.appointments.Add(app);
db.SaveChanges();
}
catch (System.Data.Entity.Validation.DbEntityValidationException e)
{
}
}
return View("Edit", appointment);
}
问题:如何保持模型结构相同,只更新表中appointments
一条记录而不修改表valid_clients
。
您的代码会创建一个新appointments
。 它不会更新现有版本。
如果要更新模型,请执行以下操作:
appointments app = db1.appointments.Single(d => d.appt_id == appointment.appt_id);
app.appt_status = "RESCHED";
app.time_stamp = DateTime.Now;
app.OtherValue = appointment.OtherValue;
db.SaveChanges();
你省略了这些行:
app = appointment;
db.appointments.Add(app);
app = appointment;
实际上不会编辑您选择的appointments
。 它只是更改app
以指向不同的。
db.appointments.Add(app);
添加了一个新行,这似乎不是您需要的。