我有一个服务对象 Update
public bool Update(object original, object modified)
{
var originalClient = (Client)original;
var modifiedClient = (Client)modified;
_context.Clients.Update(originalClient); //<-- throws the error
_context.SaveChanges();
//Variance checking and logging of changes between the modified and original
}
Run Code Online (Sandbox Code Playgroud)
这是我从以下方法调用此方法的地方:
public IActionResult Update(DetailViewModel vm)
{
var originalClient = (Client)_service.GetAsNoTracking(vm.ClientId);
var modifiedClient = (Client)_service.Fetch(vm.ClientId.ToString());
// Changing the modifiedClient here
_service.Update(originalClient, modifiedClient);
}
Run Code Online (Sandbox Code Playgroud)
这是GetAsNotTracking方法:
public Client GetAsNoTracking(long id)
{
return GetClientQueryableObject(id).AsNoTracking().FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)
Fetch 方法:
public object Fetch(string id)
{
long fetchId;
long.TryParse(id, out fetchId); …Run Code Online (Sandbox Code Playgroud)