我有一个简单的多对多关系数据库与这些实体:
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();
}
我用谷歌搜索并试图解决这个问题,但它仍然无法正常工作。
实体对象类别由我的上下文类的多个实例引用。问题出在控制器中,我使用了两个存储库:一个用于产品,另一个用于产品。在这两个类中,我声明了上下文的实例。因此,已经声明了两个上下文实例并被抛出异常。
这是我的错,而且不专心。问题已结束。