无法保存多对多的Entity Framework

问题描述 投票:0回答:1

我有一个简单的多对多关系数据库与这些实体:

public class Product
{
    public Product()
    {
        this.Category = new HashSet<Category>();
    }

    // just other fields...
    public virtual ICollection<Category> Category { get; set; }
}

public class Category
{
    public Category()
    {
        this.Product = new HashSet<Product>();
    }

    // other fields
    public virtual ICollection<Product> Product { get; set; }
}

我正在尝试保存产品,但它会引发异常:

System.InvalidOperationException:'无法定义两个对象之间的关系,因为它们附加到不同的ObjectContext对象。

我的代码:

public void SaveProduct(Product product, IEnumerable<Category> categories)
{
    if (product.ProductID == null)
    {
        product.ProductID = RandomKeyGeneration();
        context.Products.Add(product);
        context.Products.Attach(product);

        foreach (var cat in categories)
            product.Category.Add(cat);
    }

    context.SaveChanges();
}

我用谷歌搜索并试图解决这个问题,但它仍然无法正常工作。

c# asp.net-mvc entity-framework many-to-many
1个回答
0
投票

实体对象类别由我的上下文类的多个实例引用。问题出在控制器中,我使用了两个存储库:一个用于产品,另一个用于产品。在这两个类中,我声明了上下文的实例。因此,已经声明了两个上下文实例并被抛出异常。

这是我的错,而且不专心。问题已结束。

© www.soinside.com 2019 - 2024. All rights reserved.