2011-05-11 6 views
1

다른 엔터티와 두 개의 관계가 있으므로 값 개체를 데이터베이스에서 삭제하는 데 문제가 있습니다. 단지 하나의 외래 키를 throw하는 null로 설정합니다. 여기에 내 도메인은 다음과 같습니다EFCode 첫 번째 : 두 개의 엔터티 연결로 값 개체 삭제

var product = _productRepository.GetById(id); 
var project = _projectRepository.GetById(projectId); 
var productQuantity = project.ProductQuantitys.SingleOrDefault(x => x.Product == product); 

project.ProductQuantitys.Remove(productQuantity); 

당신이 어떤 생각을위한 감사합니다

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; } 
} 

것은 여기에 프로젝트 떨어져 ProductQuantity을 삭제하려면 코드입니다!

답변

0

충분하지 않습니다. ProductProject에서 개체를 제거한 후에는 context.ProductQuantities.Remove(...)

개체를 제거해야합니다. 이러한 개체에서 개체를 제거하면 정의한 독립적 인 연관성 만 삭제됩니다. 데이터베이스에서 FK를 null로 설정하지만 관련 오브젝트는 삭제하지 않습니다.

btw. 값 개체 ID/키가 없습니다. EF의 값 개체는 복잡한 형식입니다.

+0

안녕하세요. 의견을 보내 주셔서 감사합니다. 맞아, 나는 내 ProductQuantity 객체에 ID를 가져서는 안된다. context.ProductQuantities.Remove는이 개체가 엔티티가 아니기 때문에 작동하지 않습니다. 내 도메인 모델을 잘못 생각한 것 같습니다. 나는 또한 ProductQuantity를 가질 필요가있다. 왜냐하면 나는 객체에 Int의 int를 가지고 있기 때문에 그것은 프로젝트와 제품 사이의 관계가 아니기 때문이다. ID를 제거하고 데이터베이스를 다시 작성하면 키가 설정되지 않았다는 오류가 발생하지만 HasKey 속성을 Product 및 Project로 설정하는 맵 객체를 만들 때 오류가 발생합니까? 적절한 방법에 대한 생각. – user654336

관련 문제