错误“一个实体对象不能被IEntityChangeTracker的多个实例引用。” :如何正确更新子实体?

尼山斯·桑(Nishanth Shaan)

我已经尝试了在堆栈和互联网中找到的多个解决方案,但在此之后我整整一天的工作都已经丢失了

public async Task<ActionResult> Edit(JobeezUserInfoViewModel jobeezUserInfo, HttpPostedFileBase UploadedImage)
    {
var user = UserManager.FindById(User.Identity.GetUserId());
        //list of languages
        var lgs = jobeezUserInfo.Languages.Select(l => l.LanguageId);

//Languages to be deleted
        var lngTodel = db.Languages.AsNoTracking()
            .Where(ut => ut.JobeezUserInfoId == jobeezUserInfo.ApplicationUserId)
            .Where(ut => !lgs.Contains(ut.LanguageId));
//language ids as Ilist for better performace
var ids = lgs as IList<int> ?? lgs.ToList();
//Languages to be added
        var lngToAdd = ids
            .Where(
                lid =>
                    user.JobeezUserInfo.Languages
                        .Select(ut => ut.LanguageId) //for each userlanguages create a list if languageids _
                        .Contains(lid) == false //_check if it does not contain the posted languageids and return the language ids if it is the case(tid is the posted languageid)
            )
            .Select(tid =>

                new Language()
                {

                    JobeezUserInfoId = user.Id,
                    LanguageId = tid,
                    Name = Enum.GetName(typeof(Enums.LanguageEnum), tid)
                });
//languages to be updated
        var lngToUpdate = user.JobeezUserInfo.Languages.Where(l=>ids.Contains(l.LanguageId));


        Mapper.CreateMap<JobeezUserInfoViewModel, JobeezUserInfo>(MemberList.Destination);
        JobeezUserInfo info = Mapper.Map<JobeezUserInfo>(jobeezUserInfo) as JobeezUserInfo;

        user.FirstName = jobeezUserInfo.FirstName;
        user.LastName = jobeezUserInfo.LastName;
        user.PostCode = jobeezUserInfo.PostCode;
        user.PhoneNumber = jobeezUserInfo.Telephone;

        if (ModelState.IsValid)
        {
            //mark modified for the userinfo
            db.JobeezUserInfo.Attach(info); // Entity is in Unchanged state
            db.Entry(info).State = EntityState.Modified;

而下一行是-我的问题是为什么我不能附加语言对象“ l”

lngToUpdate.ForEach(l =>
        {
            db.Languages.Attach(l);
            db.Entry(l).State = EntityState.Modified;

        });

我有错误

“一个实体对象不能被IEntityChangeTracker的多个实例引用。”

我已经打开了快速视图。在下一行之后(图像的一部分还显示了我的控制器动作(viewmodel对象)的输入参数:

            //mark modified for the userinfo
            db.JobeezUserInfo.Attach(info); // Entity is in Unchanged state

在此处输入图片说明

精度:db.changetracket.Entities()中的languageobject是发布到我的服务器(在我的viewModel中)的同一对象,为什么enitity框架无法理解必须跟踪或附加新对象来代替新语言对象(为了清楚起见,我的代码是局部的,如果需要的话,我可以发布完整的代码)我的问题是:我真的不知道正确更新子实体的最佳方法是什么。我在这里做错什么以及如何进行这项工作?提前致谢

尼山斯·桑(Nishanth Shaan)

我了解到我实际上有两个不同的错误

1。

我遇到此错误是因为lngToUpdate错误地填充了一个人-谈论以下内容(我的糟糕!;))。

var lngToUpdate = user.JobeezUserInfo.Languages.Where(l=>ids.Contains(l.LanguageId));

它与数据库中已经被跟踪的相同集合。因此,我创建了一个新集合,该集合的属性值已针对每种要更新其语言的语言进行了修改。

2。

现在,对于另外两个列表lngToAddlngToUpdateObjectStateManager购买后,请购买以下代码

var manager = ((IObjectContextAdapter)db).ObjectContext.ObjectStateManager;

我使用管理器objectState将以前跟踪的语言更改EntityState.unchanged,将新语言附加到上下文中并EntityState.Added EntityState.Deleted分别进行了标记(根据我的列表)。

它奏效了!希望这对某人有帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何用谓词过滤子实体集合?

来自分类Dev

实体框架的无效操作异常“一个实体对象不能被IEntityChangeTracker的多个实例引用”

来自分类Dev

将对象保存到数据库结果中:“一个IEntityChangeTracker的多个实例无法引用一个实体对象”

来自分类Dev

IEntityChangeTracker无法修复的多个实例不能引用一个实体对象

来自分类Dev

MVC实体对象不能被IEntityChangeTracker的多个实例引用

来自分类Dev

IEntityChangeTracker错误的多个实例不能引用一个实体对象

来自分类Dev

尝试将更改保存到多种类型的实体时,多个IEntityChangeTracker错误实例无法引用一个实体对象

来自分类Dev

在EF 6中更新子实体的正确方法是什么?

来自分类Dev

MVC 5中带有EF 6的错误“ System.InvalidOperationException:IEntityChangeTracker的多个实例无法引用一个实体对象。”

来自分类Dev

Entity Framework中的多对多关系-导致“ IEntityChangeTracker的多个实例无法引用一个实体对象”

来自分类Dev

实体框架“ IEntityChangeTracker的多个实例不能引用一个实体对象”

来自分类Dev

如何对2个子实体进行分组并获得这两个子实体的总数?

来自分类Dev

如何级联更新到Hibernate的子实体

来自分类Dev

更新父实体而不更改子实体

来自分类Dev

如何在Spring Boot中更新子实体和父实体?

来自分类Dev

更新子实体时出错

来自分类Dev

插入数据库时,IEntityChangeTracker的多个实例不能引用一个实体对象

来自分类Dev

如何自动删除子实体?

来自分类Dev

实体框架的无效操作异常“一个实体对象不能被IEntityChangeTracker的多个实例引用”

来自分类Dev

实体对象不能被IEntityChangeTracker的多个实例引用(再次)

来自分类Dev

EF4更新导航属性IEntityChangeTracker的多个实例不能引用实体对象

来自分类Dev

Ninject:实体对象不能被IEntityChangeTracker的多个实例引用

来自分类Dev

了解异常“一个实体对象不能被IEntityChangeTracker的多个实例引用”。

来自分类Dev

实体尝试更新不正确的表/ IEntityChangeTracker问题的多个实例

来自分类Dev

插入子实体后,GreenDAO不会更新实体的子树

来自分类Dev

如何对2个子实体进行分组并获得这两个子实体的总数?

来自分类Dev

实体框架未正确加载子实体

来自分类Dev

Swift Core Data - 如何更新所有子实体的属性?

来自分类Dev

为什么我的实体被 IEntityChangeTracker 的多个实例引用?

Related 相关文章

  1. 1

    如何用谓词过滤子实体集合?

  2. 2

    实体框架的无效操作异常“一个实体对象不能被IEntityChangeTracker的多个实例引用”

  3. 3

    将对象保存到数据库结果中:“一个IEntityChangeTracker的多个实例无法引用一个实体对象”

  4. 4

    IEntityChangeTracker无法修复的多个实例不能引用一个实体对象

  5. 5

    MVC实体对象不能被IEntityChangeTracker的多个实例引用

  6. 6

    IEntityChangeTracker错误的多个实例不能引用一个实体对象

  7. 7

    尝试将更改保存到多种类型的实体时,多个IEntityChangeTracker错误实例无法引用一个实体对象

  8. 8

    在EF 6中更新子实体的正确方法是什么?

  9. 9

    MVC 5中带有EF 6的错误“ System.InvalidOperationException:IEntityChangeTracker的多个实例无法引用一个实体对象。”

  10. 10

    Entity Framework中的多对多关系-导致“ IEntityChangeTracker的多个实例无法引用一个实体对象”

  11. 11

    实体框架“ IEntityChangeTracker的多个实例不能引用一个实体对象”

  12. 12

    如何对2个子实体进行分组并获得这两个子实体的总数?

  13. 13

    如何级联更新到Hibernate的子实体

  14. 14

    更新父实体而不更改子实体

  15. 15

    如何在Spring Boot中更新子实体和父实体?

  16. 16

    更新子实体时出错

  17. 17

    插入数据库时,IEntityChangeTracker的多个实例不能引用一个实体对象

  18. 18

    如何自动删除子实体?

  19. 19

    实体框架的无效操作异常“一个实体对象不能被IEntityChangeTracker的多个实例引用”

  20. 20

    实体对象不能被IEntityChangeTracker的多个实例引用(再次)

  21. 21

    EF4更新导航属性IEntityChangeTracker的多个实例不能引用实体对象

  22. 22

    Ninject:实体对象不能被IEntityChangeTracker的多个实例引用

  23. 23

    了解异常“一个实体对象不能被IEntityChangeTracker的多个实例引用”。

  24. 24

    实体尝试更新不正确的表/ IEntityChangeTracker问题的多个实例

  25. 25

    插入子实体后,GreenDAO不会更新实体的子树

  26. 26

    如何对2个子实体进行分组并获得这两个子实体的总数?

  27. 27

    实体框架未正确加载子实体

  28. 28

    Swift Core Data - 如何更新所有子实体的属性?

  29. 29

    为什么我的实体被 IEntityChangeTracker 的多个实例引用?

热门标签

归档