Reproduced.
[Test]
public void ContextRemoveClearTest()
{
CustomerEntity newEntity = new CustomerEntity();
newEntity.CustomerId = "FUBAR";
OrderEntity newOrder = new OrderEntity();
newOrder.OrderId = 131313;
newEntity.Orders.Add(newOrder);
Assert.AreEqual(newEntity, newOrder.Customers);
CustomerEntity loadedEntity = new CustomerEntity("CHOPS");
PrefetchPath2 path = new PrefetchPath2(EntityType.CustomerEntity);
path.Add(CustomerEntity.PrefetchPathOrders);
using(DataAccessAdapter adapter = new DataAccessAdapter())
{
Assert.IsTrue(adapter.FetchEntity(loadedEntity, path));
}
Context c = new Context();
c.Add(newEntity);
c.Add(loadedEntity);
Assert.AreEqual(c, newEntity.ActiveContext);
Assert.AreEqual(c, newOrder.ActiveContext);
Assert.AreEqual(c, loadedEntity.ActiveContext);
foreach(OrderEntity o in loadedEntity.Orders)
{
Assert.AreEqual(c, o.ActiveContext);
}
// remove them.
c.Remove(newEntity);
c.Remove(loadedEntity);
Assert.IsNull(newEntity.ActiveContext); // <<<<<<<<<<<<
Assert.IsNull(newOrder.ActiveContext);
Assert.IsNull(loadedEntity.ActiveContext);
foreach(OrderEntity o in loadedEntity.Orders)
{
Assert.IsNull(o.ActiveContext);
}
// clear
c.Add(newEntity);
c.Add(loadedEntity);
Assert.AreEqual(c, newEntity.ActiveContext);
Assert.AreEqual(c, newOrder.ActiveContext);
Assert.AreEqual(c, loadedEntity.ActiveContext);
foreach(OrderEntity o in loadedEntity.Orders)
{
Assert.AreEqual(c, o.ActiveContext);
}
c.Clear();
Assert.IsNull(newEntity.ActiveContext);
Assert.IsNull(newOrder.ActiveContext);
Assert.IsNull(loadedEntity.ActiveContext);
foreach(OrderEntity o in loadedEntity.Orders)
{
Assert.IsNull(o.ActiveContext);
}
}