当实体与身份用户关联时,实体框架核心 3.2 更新失败

时间:2020-12-30 04:52:59

标签: c# asp.net-mvc asp.net-core tracker-enabled-dbcontext

这是一个新问题。试图更新数据库中的条目。请注意,此条目依赖于用户。当我没有任何问题与用户关联时,我执行了与过去相同的逻辑。然而,现在它让我感到悲伤。这是屏幕截图,enter image description here

这是例外说明的详细信息 System.InvalidOperationException HResult=0x80131509 Message=实体类型“药物”上的属性“Id”在尝试将实体状态更改为“已修改”时具有临时值。显式设置永久值或确保将数据库配置为为此属性生成值。 来源=Microsoft.EntityFrameworkCore 堆栈跟踪: 在 Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.SetEntityState(EntityState oldState, EntityState newState, Boolean acceptChanges, Boolean modifyProperties) 在 Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.SetEntityState(EntityState entityState, Boolean acceptChanges, Boolean modifyProperties, Nullable`1 forceStateWhenUnknownKey) 在 Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry.set_State(EntityState value) 在 C:\bite-us\stackoverflow\mmm_development\MedicalManager\Models\Repositories\MedicationRepository.cs:line 71 中的 MedicalManager.Models.Repositories.MedicationRepository.UpdateMedication(Medication drug, String UserId) 在 C:\bite-us\stackoverflow\mmm_development\MedicalManager\Controllers\HomeController.cs:line 123 中的 MedicalManager.Controllers.HomeController.Edit(药物治疗) 在 Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute(Object target, Object[] parameters) 在 Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.SyncActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments) 在 Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync() 在 Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) 在 Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()

1 个答案:

答案 0 :(得分:0)

因为你们的关系是一对多的,如果你的药物不包含Id,它不知道更新哪个数据,会导致这个问题。

您应该检查 medication 的来源,并将您需要更新的 Id 添加到 medication 中。

你可以在这里看到我的测试。 enter image description here