c# - 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 不是当前上下文模型的一部分。
我该如何解决这个问题?
解决方案
您设法修复了错误(在评论中),但我会在这里为其他人发布解决方案。
错误:
“System.InvalidOperationException”:实体类型 Booking 不是当前上下文模型的一部分。
可能有几个原因。
实体已分离或以某种方式丢失其在实体框架中的引用。这可以通过刷新实体来解决。转到 edmx 文件,右键单击设计器表面并选择
Update model from database
. 如果仍然失败,请删除设计器中的实体(或所有实体),然后从数据库中更新模型。如果表/实体不存在。在这种情况下,创建表/实体并更新实体。
然后从数据库更新后重建。
推荐阅读
- django - Django:有条件地覆盖get_queryset
- python - 为什么我收到错误:创建进程失败?
- sql - 带有包含表变量的 while 条件的 SQL Server 存储过程
- java - java如何将此代码从查找所有真实对象更改为查找错误
- node.js - 获取嵌入 PowerBi Angular 8 的正确令牌
- javascript - react hooks 为什么我的拖放项目卡住了?
- javascript - 在MVC中动态添加时如何在每行上将行号值设置为Textboxfor
- c++ - 自定义 CFileDialog 时如何控制新控件的大小和位置?
- javascript - 如何触发按钮点击按键
- javascript - 在 JavaScript 中添加一个简单的 counter[i] 变量以附加到 wrapper.append(container);