ASP.NET MVC将一个表复制到另一个表后从其中删除行

时间:2018-12-10 19:12:44

标签: c# asp.net-mvc model-view-controller copy

我遇到一种情况,我试图从表中删除一项,但在此之前我想将其复制到另一张表中。

这是我的删除方法:

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不是当前上下文模型的一部分。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

您设法解决了该错误(在注释中),但我将在此处为其他人发布解决方案。

错误:

  

'System.InvalidOperationException':实体类型Booking不是当前上下文模型的一部分。

可能是由于多种原因造成的。

  1. 该实体已分离或以某种方式丢失了其引用 在实体框架中。这可以通过刷新 实体。转到edmx文件,右键单击设计器图面 并选择Update model from database。如果仍然失败, 在设计器中删除实体(或所有实体),然后更新 数据库中的模型。

  2. 如果表/实体不存在。在这种情况下,创建表/实体并 更新实体。

  3. 从数据库更新后再重建。