【发布时间】:2019-07-12 22:32:02
【问题描述】:
我有一个 HttpPost 控制器,它将学校模型预订添加到学校数据库中(它保存了学校名称、学校日期、学校 ID 等信息)。现在我需要删除 Dates Db 中与刚刚输入 School Db 的日期相同的行,例如如果输入的学校模型日期是 13/07/2019,我想在 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");
}
学校模型(Schools Db 上下文):
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; }
}
}
DatePicker 模型(Dates Db 上下文):
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 列。
提前致谢
【问题讨论】:
-
好的。那么您从日期表中删除日期的错误是什么?我真的不知道你的数据库的结构,但正在删除你真正想要的东西?为什么没有一个列说
deleted并将一个项目标记为已删除?,删除后没有Ctrl+Z。 -
@bosco 我不想删除 Dates Db 上下文中的日期字段,我想删除与 Schools Db 上下文中日期相同的行。例如如果输入的学校模型日期是 13/07/2019,我想在 Dates Db 中找到日期为 13/07/2019 的行,然后从表中删除该行
-
好的。既然您仍想删除该行,那么您当前的代码有什么错误??
-
@Bosco 我已经更新了我原来的问题伙伴
标签: c# asp.net asp.net-mvc linq