我想知道 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 OrderId
PK在你的OrderLine
实体移除OrderLine
from Order.OrderLines
也会删除OrderLine
在数据库中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)