我从数据库中删除值对象时遇到问题,因为它与不同的实体有两个关系,它只是将一个外键设置为 null 抛出。 这是我的域名:
public class Product : IEntity
{
public int Id { get; set; }
public string ModelNumber { get; set; }
public ICollection<ProductQuantity> ProductQuantities { get; set; }
}
public class Project: IEntity
{
public int Id { get; set; }
public string SpecConnect { get; set; }
public virtual ICollection<ProductQuantity> ProductQuantitys { get; set; }
}
public class ProductQuantity
{
public int Id { get; set; }
public virtual Product Product { get; set; }
public virtual Project Project { get; set; }
}
这是我从项目中删除产品数量的代码:
var product = _productRepository.GetById(id);
var project = _projectRepository.GetById(projectId);
var productQuantity = project.ProductQuantitys.SingleOrDefault(x => x.Product == product);
project.ProductQuantitys.Remove(productQuantity);
谢谢你的任何想法!
这还不够。您必须从Product
和Project
中删除该对象,然后必须通过调用 context.ProductQuantities.Remove(...)
将其删除
从这些集合中删除对象只会删除您定义的独立关联。它会导致将数据库中的 FK 设置为 null,但不会导致删除相关对象。
顺便说一句,值对象没有 Id/键。EF 中的值对象是复杂类型。