您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

ASP.NET MVC-附加类型为“ MODELNAME”的实体失败,因为相同类型的另一个实体已经具有相同的主键值

ASP.NET MVC-附加类型为“ MODELNAME”的实体失败,因为相同类型的另一个实体已经具有相同的主键值

问题解决了!

Attach方法可能会帮助某人,但在这种情况下将无济于事,因为在将文档加载到Edit GET控制器功能中时已经对其进行了跟踪。附加将引发完全相同的错误

在这里遇到的问题是由canUserAccessA()在更新对象a的状态之前加载A实体的函数引起的。这正在破坏被跟踪的实体,并将对象的状态更改为Detached

解决方案是进行修改canUserAccessA()以便不会跟踪正在加载的对象。AsNoTracking()查询上下文时应调用函数

// User -> Receipt validation
private bool canUserAccessA(int aID)
{
    int userID = WebSecurity.GetUserId(User.Identity.Name);
    int aFound = db.Model.AsNoTracking().Where(x => x.aID == aID && x.UserID==userID).Count();

    return (aFound > 0); //if aFound > 0, then return true, else return false.
}

出于某种原因,我无法.Find(aID)与之配合使用,AsNoTracking()但这并不重要,因为我可以通过更改查询来实现相同的目的。

希望这会帮助任何有类似问题的人!

dotnet 2022/1/1 18:22:48 有452人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶