该问题的原因通常是使用了两个不同的实例来操作同一对象,因此EF Core不知道哪个实例应处理所做的更改。为了解决这个问题,建议使用依赖注入容器(如ASP.NET Core的内置DI)来确保使用同一个实例。
以下是代码示例:
在Startup.cs中注册DbContext:
services.AddDbContext
注入MyDbContext:
public class MyController : Controller { private readonly MyDbContext _context;
public MyController(MyDbContext context)
{
_context = context;
}
public IActionResult MyAction(int id)
{
MyEntity myEntity = _context.MyEntities.Find(id);
// Make changes to myEntity...
_context.SaveChanges();
return View();
}
}
这将确保您的应用程序中的所有实例都使用由DI容器创建的同一个MyDbContext实例。