C# 基于模型变量删除表中行的控制器
我有一个HttpPost控制器,它将学校模型预订添加到学校数据库中,保存学校名称、学校日期、学校Id等信息。现在我需要删除日期数据库中的行,该行的日期与刚输入学校数据库的日期相同,例如,如果输入的学校模型日期是2019年7月13日,我想在Dates Db中找到日期为-13/07/2019的行,然后从表中删除该行 到目前为止,我的控制器:C# 基于模型变量删除表中行的控制器,c#,asp.net,asp.net-mvc,linq,C#,Asp.net,Asp.net Mvc,Linq,我有一个HttpPost控制器,它将学校模型预订添加到学校数据库中,保存学校名称、学校日期、学校Id等信息。现在我需要删除日期数据库中的行,该行的日期与刚输入学校数据库的日期相同,例如,如果输入的学校模型日期是2019年7月13日,我想在Dates Db中找到日期为-13/07/2019的行,然后从表中删除该行 到目前为止,我的控制器: [HttpPost] public ActionResult Booking(School model) { db.School
[HttpPost]
public ActionResult Booking(School model)
{
db.Schools.Add(model);
db.SaveChanges();
//make chosen school date unavailable in datepicker
Datepicker date = db.Dates.Find(model.Date);
db.Dates.Remove(date);
db.SaveChanges();
return RedirectToAction("Booking");
}
学校示范学校数据库上下文:
namespace BookingSys.Models
{
public class School
{
public DateTime Date { get; set; }
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public int PhoneNumber { get; set; }
}
}
日期选择器模型日期数据库上下文:
namespace BookingSys.Models
{
public class Datepicker
{
public DateTime Date { get; set; }
public int Id { get; set; }
public int LecturerId { get; set; }
public string Comment { get; set; }
}
}
在视图中单击“提交”以创建学校模型时,我当前遇到以下错误:
System.ArgumentException:'主键值之一的类型与实体中定义的类型不匹配。有关详细信息,请参见内部异常。
参数名称:keyValues'
EntitySqlException:参数类型“Edm.Int32”和“Edm.DateTime”与此操作不兼容。在WHERE谓词附近,第1行,第62列
提前感谢您需要的是lamda表达式,还需要使用First或FirstOrDefault 换行
Datepicker date = db.Dates.Find(model.Date);
到
或
Find需要表主键的值,并且需要获取数据托架日期Ok。那么,从日期表中删除日期的错误是什么呢?。我真的不知道你的数据库的结构,但正在删除你真正想要的?为什么不让列显示为已删除并将项目标记为已删除?。删除后没有Ctrl+Z。@bosco我不想删除Dates Db上下文中的日期字段,我想删除与Dates Db上下文中的日期相同的行。e、 g.如果输入的学校型号日期为2019年7月13日,我想在Dates Db中找到日期为-2019年7月13日的行,然后从表OK中删除该行。既然您仍想删除该行,那么您当前代码的错误是什么???@Bosco我已更新了我的原始问题伙伴
Datepicker date = db.Dates.First(m => m.Date == model.Date);
//if you are not sure if the date exists in both tables
Datepicker date = db.Dates.FirstOrDefault(m => m.Date == model.Date);
// then check for null before deleting