首页 > 解决方案 > ASP.NET MVC 在将一个表复制到另一个表后删除该行

问题描述

我有一个案例,我试图从表中删除一个项目,但在此之前我想将它复制到另一个表。

这是我的删除方法:

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");
        }
    }

这是一种将“Car”表转换为“Booking”表的方法:

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

我该如何解决这个问题?

标签: c#asp.net-mvcmodel-view-controllercopy

解决方案


您设法修复了错误(在评论中),但我会在这里为其他人发布解决方案。

错误:

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

可能有几个原因。

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

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

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


推荐阅读