添加到父实体时是否会自动跟踪子实体?

2024-03-26

我想知道 EF Code First 是否会自动跟踪下面示例中的“子”对象。

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

是的,当你得到你的Order从上下文中添加新的OrderLine, DbContext将其插入数据库调用SaveChanges。它还将跟踪加载的所有更改OrderLines。唯一的例外是删除现有的OrderLine。如果你的OrderLine仅有PKOrderLineId去除OrderLine from Order.OrderLines收集不会删除OrderLine在数据库中,但它会设置它的OrderId为空(=您的情况例外)。如果两者都OrderLineId and OrderIdPK在你的OrderLine实体移除OrderLine from Order.OrderLines也会删除OrderLine在数据库中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

添加到父实体时是否会自动跟踪子实体? 的相关文章

随机推荐