无法跟踪实体类型“ x”的实例,因为已经跟踪了具有相同的{'a','b'}键值的另一个实例

萨尔图兹

在编辑多对多关系之间的关系表时,标题出现错误。它不会在表上重复,因此我尝试删除行,然后创建新的行,但是没有用。

public void Update(ThermoformProduct entity, int[] thermoformCategoryIds)
{
    using (var context = new ShopContext())
    {
        var product = context.ThermoformProducts                  
            .Include(i => i.ThermoformProductCategories)                
            .FirstOrDefault(i => i.ProductId == entity.ProductId);            

        if (product != null)
        {           
            product.Code = entity.Code;
            product.Culture = entity.Culture;
            product.Renk = entity.Renk;
            product.UstGenislik = entity.UstGenislik;
            product.UstCap = entity.UstCap;
            product.AltCap = entity.AltCap;
            product.TbCap = entity.TbCap;
            product.Yukseklik = entity.Yukseklik;
            product.Hacim = entity.Hacim;
            product.TamHacim = entity.TamHacim;
            product.Baski = entity.Baski;
            product.SosisIciAdet = entity.SosisIciAdet;
            product.KoliIciAdet = entity.KoliIciAdet;
            product.ImageUrl = entity.ImageUrl;

            product.ThermoformProductCategories.RemoveAll(s=>s.ProductId == product.ProductId);

            product.ThermoformProductCategories = thermoformCategoryIds.Select(catid =>  new ThermoformProductCategory()
            {
                ProductId = product.ProductId,
                ThermoformProduct = product,
                CategoryId = catid,
                ThermoformCategory = context.ThermoformCategories.Where(i => i.CategoryId == catid).FirstOrDefault()

            }).ToList();

            context.SaveChanges();
        }
    }
}
阿提亚尔

EF无法使用相同的主键跟踪实体类型的两个不同实例。您已包括相关ThermoformProductCategory实体,因此上下文会对其进行跟踪。当您删除它们时,它们将从该ThermoformProductCategories产品属性中清除,但是它们并未从上下文中删除,并且仍在跟踪中。最后,当您创建的新列表时ThermoformProductCategory,某些新主键与先前的主键匹配(上下文中已经存在)

由于您是在重新创建整个列表,因此无需首先获取相关实体。只需分配一个新列表,EF就会替换整个相关实体列表-

var product = context.ThermoformProducts.FirstOrDefault(i => i.ProductId == entity.ProductId);
if (product != null)
{       
    // set all the properties

    product.ThermoformProductCategories = thermoformCategoryIds.Select(catid =>  new ThermoformProductCategory()
    {
        ProductId = product.ProductId,
        CategoryId = catid
    }).ToList();

    context.SaveChanges();     
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

Hibernate在另一个实体列表中不包括与实体类型相同的子实体

来自分类常见问题

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

来自分类Dev

测试一个对象是否是另一个实例类型的子类

来自分类Dev

实例化一个对象的类型取决于另一个对象的类型

来自分类Dev

“附加类型T的实体失败,因为相同类型的另一个实体已经具有相同的主键值”

来自分类Dev

自动将类型类实例设为另一个实例

来自分类Dev

附加“ X”类型的实体失败,因为另一个相同类型的实体

来自分类Dev

带有AutoMapper的通用工作单元和存储库模式引发异常“相同类型的另一个实体已经具有相同的主键值”

来自分类Dev

Gcloud实例无法ping通另一个

来自分类Dev

引用相同对象类型的另一个对象实例的类对象属性

来自分类Dev

无法跟踪,因为另一个实例具有相同的键值

来自分类Dev

EF Core:无法跟踪实体类型的实例,因为另一个具有相同键值的实例

来自分类Dev

无法跟踪实体类型“个人资料”的实例,因为已经跟踪了另一个键值为“ {Id:1087}”的实例

来自分类Dev

为什么会出现此异常“附加类型为'Model'的实体失败,因为相同类型的另一个实体已经具有相同的主键值。”

来自分类Dev

具有Automapper的EF Core引发异常“无法跟踪实体类型”

来自分类Dev

如何检查另一个密钥库实例B的身份验证密钥库实例A?

来自分类Dev

AWS Fargate实例无法向另一个实例发出请求

来自分类Dev

如何跟踪一个类中另一个类的实例?

来自分类Dev

EF,Automapper异常,“附加类型...的实体失败,因为相同类型的另一个实体已经具有相同的主键值”

来自分类Dev

无法跟踪实体类型“ TestType”的实例,因为已经跟踪了具有相同键的该类型的另一个实例

来自分类Dev

EF Core 更新无法跟踪实体类型“广告”的实例

来自分类Dev

SQL 选择具有另一个实体的大多数实例的实体

来自分类Dev

无法加载,因为已经加载了另一个具有相同文件的 AssetBundle

来自分类Dev

无法跟踪实体类型 <T> 的实例,因为已跟踪另一个具有相同 {'Id'} 键值的实例

来自分类Dev

附加类型为“XXX”的实体失败,因为同一类型的另一个实体已具有相同的主键值

来自分类Dev

附加“ModelName”类型的实体失败,因为另一个相同类型的实体已经具有相同的主键值

来自分类Dev

ASP.NET Core - 无法跟踪实体类型的实例

来自分类Dev

播种数据库时无法跟踪实体类型“分配”的实例

来自分类Dev

“如何修复“实体类型的实例”无法跟踪,因为另一个具有键值“{TypeId: 1}”的实例已被跟踪。

Related 相关文章

  1. 1

    Hibernate在另一个实体列表中不包括与实体类型相同的子实体

  2. 2

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

  3. 3

    测试一个对象是否是另一个实例类型的子类

  4. 4

    实例化一个对象的类型取决于另一个对象的类型

  5. 5

    “附加类型T的实体失败,因为相同类型的另一个实体已经具有相同的主键值”

  6. 6

    自动将类型类实例设为另一个实例

  7. 7

    附加“ X”类型的实体失败,因为另一个相同类型的实体

  8. 8

    带有AutoMapper的通用工作单元和存储库模式引发异常“相同类型的另一个实体已经具有相同的主键值”

  9. 9

    Gcloud实例无法ping通另一个

  10. 10

    引用相同对象类型的另一个对象实例的类对象属性

  11. 11

    无法跟踪,因为另一个实例具有相同的键值

  12. 12

    EF Core:无法跟踪实体类型的实例,因为另一个具有相同键值的实例

  13. 13

    无法跟踪实体类型“个人资料”的实例,因为已经跟踪了另一个键值为“ {Id:1087}”的实例

  14. 14

    为什么会出现此异常“附加类型为'Model'的实体失败,因为相同类型的另一个实体已经具有相同的主键值。”

  15. 15

    具有Automapper的EF Core引发异常“无法跟踪实体类型”

  16. 16

    如何检查另一个密钥库实例B的身份验证密钥库实例A?

  17. 17

    AWS Fargate实例无法向另一个实例发出请求

  18. 18

    如何跟踪一个类中另一个类的实例?

  19. 19

    EF,Automapper异常,“附加类型...的实体失败,因为相同类型的另一个实体已经具有相同的主键值”

  20. 20

    无法跟踪实体类型“ TestType”的实例,因为已经跟踪了具有相同键的该类型的另一个实例

  21. 21

    EF Core 更新无法跟踪实体类型“广告”的实例

  22. 22

    SQL 选择具有另一个实体的大多数实例的实体

  23. 23

    无法加载,因为已经加载了另一个具有相同文件的 AssetBundle

  24. 24

    无法跟踪实体类型 <T> 的实例,因为已跟踪另一个具有相同 {'Id'} 键值的实例

  25. 25

    附加类型为“XXX”的实体失败,因为同一类型的另一个实体已具有相同的主键值

  26. 26

    附加“ModelName”类型的实体失败,因为另一个相同类型的实体已经具有相同的主键值

  27. 27

    ASP.NET Core - 无法跟踪实体类型的实例

  28. 28

    播种数据库时无法跟踪实体类型“分配”的实例

  29. 29

    “如何修复“实体类型的实例”无法跟踪,因为另一个具有键值“{TypeId: 1}”的实例已被跟踪。

热门标签

归档