2011-03-10 3 views
4

EF CodeFirst가 아래 예제에서 "자식"개체를 자동으로 추적하는지 여부를 알고 싶습니다. 여기 부모 엔티티를 추가하면 하위 엔티티가 자동으로 추적됩니까?

var db = MyDataContext(); 
var order = db.Orders.Find(orderId); 
order.AddOrderLine("Fancy Product"); 
db.Commit(); 

내 (간체) 도메인 엔티티

public class OrderLine { 
    public Guid OrderLineId { get; private set; } 
    public Guid OrderId { get; private set; } 
    public string Description { get; private set; } 

    public OrderLine(Guid orderId, string description) { 
    OrderLineId = Guid.NewGuid(); 
    OrderId = orderId; 
    Description = description; 
    } 
} 

public class Order : Aggregate { 
    public Guid OrderId { get; private set; } 
    public ICollection<OrderLine> OrderLines { get; private set; } 

    public void AddOrderLine(string description) { 
    OrderLines.Add(new OrderLine(OrderId, description)); 
    } 
} 

답변

4

예,이 상황에서 Order을 얻고 새로운 OrderLine, DbContext 데이터베이스가 SaveChanges 전화에 삽입합니다 추가 할 수 있습니다. 또한로드 된 모든 변경 사항을 추적하여 OrderLines을로드합니다. 유일한 예외는 기존 OrderLine을 삭제하는 것입니다. OrderLine에 PK 만있는 경우 OrderLineIdOrderLineOrder.OrderLines collectin에서 삭제하면 데이터베이스에 OrderLine이 삭제되지 않고 대신 OrderId이 null (귀하의 경우 예외)로 설정됩니다. OrderLine 엔티티에서 OrderLineIdOrderId이 모두 PK 인 경우 OrderLineOrder.OrderLines에서 제거하면 데이터베이스에 OrderLine이 삭제됩니다.

+0

@ jessegavin : 답변에 만족 하시거나 설명이 필요합니까? –

관련 문제