EFCode 第一:删除具有两个实体关联的值对象



我从数据库中删除值对象时遇到问题,因为它与不同的实体有两个关系,它只是将一个外键设置为 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);

谢谢你的任何想法!

这还不够。您必须从ProductProject中删除该对象,然后必须通过调用 context.ProductQuantities.Remove(...) 将其删除

从这些集合中删除对象只会删除您定义的独立关联。它会导致将数据库中的 FK 设置为 null,但不会导致删除相关对象。

顺便说一句,值对象没有 Id/键。EF 中的值对象是复杂类型。

相关内容

  • 没有找到相关文章

最新更新