我遇到一种情况,我试图从表中删除一项,但在此之前我想将其复制到另一张表中。
这是我的删除方法:
public ActionResult Delete(int id, Car car)
{
try
{
using (BookCarDBEntities db = new BookCarDBEntities())
{
var carToDelete = db.Cars.FirstOrDefault(c => c.Id == id);
var book = CreateNewBooking(carToDelete);
db.Bookings.Add(book);
db.Cars.Remove(carToDelete);
db.SaveChanges();
return View(book);
}
catch (Exception ex)
{
return View(ex + "error");
}
}
这是一种将“汽车”表转换为“预订”表的方法:
private object CreateNewBooking(Car car)
{
var bookingCreated = new Booking
{
id = car.Id,
model = car.model,
make = car.make,
price = car.price,
location = car.location
};
return bookingCreated;
}
问题是我得到一个错误:
'System.InvalidOperationException':实体类型Booking不是当前上下文模型的一部分。
我该如何解决?
答案 0 :(得分:0)
您设法解决了该错误(在注释中),但我将在此处为其他人发布解决方案。
错误:
'System.InvalidOperationException':实体类型Booking不是当前上下文模型的一部分。
可能是由于多种原因造成的。
该实体已分离或以某种方式丢失了其引用
在实体框架中。这可以通过刷新
实体。转到edmx文件,右键单击设计器图面
并选择Update model from database
。如果仍然失败,
在设计器中删除实体(或所有实体),然后更新
数据库中的模型。
如果表/实体不存在。在这种情况下,创建表/实体并 更新实体。
从数据库更新后再重建。