C# 基于模型变量删除表中行的控制器

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控制器,它将学校模型预订添加到学校数据库中,保存学校名称、学校日期、学校Id等信息。现在我需要删除日期数据库中的行,该行的日期与刚输入学校数据库的日期相同,例如,如果输入的学校模型日期是2019年7月13日,我想在Dates Db中找到日期为-13/07/2019的行,然后从表中删除该行

到目前为止,我的控制器:

[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