public void ChangeTracker_ChangeOneToManyChild_WithAutoTrackChangesOff_ShouldNotUpdateChildInDb() { try { TransactionFactory.DbGate.Config.DirtyCheckStrategy = DirtyCheckStrategy.Manual; IDbConnection connection = SetupTables(); ITransaction transaction = CreateTransaction(connection); int id = 45; DirtyCheckTestRootEntity entity = new DirtyCheckTestRootEntity(); entity.IdCol = id; entity.Name = "Org-Name"; DirtyCheckTestOne2ManyEntity one2ManyEntity = new DirtyCheckTestOne2ManyEntity(); one2ManyEntity.IdCol = id; one2ManyEntity.IndexNo = 1; one2ManyEntity.Name = "Child-Org-Name"; entity.One2ManyEntities.Add(one2ManyEntity); entity.Persist(transaction); transaction.Commit(); transaction = CreateTransaction(connection); DirtyCheckTestRootEntity loadedEntity = new DirtyCheckTestRootEntity(); LoadEntityWithId(transaction, loadedEntity, id); IEnumerator <DirtyCheckTestOne2ManyEntity> enumerator = loadedEntity.One2ManyEntities.GetEnumerator(); enumerator.MoveNext(); DirtyCheckTestOne2ManyEntity loadedChild = enumerator.Current; loadedChild.Name = "Child-Upd-Name"; loadedEntity.Persist(transaction); transaction.Commit(); transaction = CreateTransaction(connection); DirtyCheckTestRootEntity reloadedEntity = new DirtyCheckTestRootEntity(); LoadEntityWithId(transaction, reloadedEntity, id); enumerator = reloadedEntity.One2ManyEntities.GetEnumerator(); enumerator.MoveNext(); DirtyCheckTestOne2ManyEntity reLoadedChild = enumerator.Current; transaction.Commit(); connection.Close(); Assert.AreEqual(reLoadedChild.Name, one2ManyEntity.Name); } catch (System.Exception e) { LogManager.GetLogger(typeof(DbGateDirtyCheckTest)).Fatal(e.Message, e); Assert.Fail(e.Message); } }
public void ChangeTracker_RemoveOneToManyChild_WithAutoTrackChangesOff_ShouldDeleteChildInDb() { try { TransactionFactory.DbGate.Config.DirtyCheckStrategy = DirtyCheckStrategy.Manual; IDbConnection connection = SetupTables(); ITransaction transaction = CreateTransaction(connection); int id = 45; DirtyCheckTestRootEntity entity = new DirtyCheckTestRootEntity(); entity.IdCol = id; entity.Name = "Org-Name"; DirtyCheckTestOne2ManyEntity one2ManyEntity = new DirtyCheckTestOne2ManyEntity(); one2ManyEntity.IdCol = id; one2ManyEntity.IndexNo = 1; one2ManyEntity.Name = "Child-Org-Name"; entity.One2ManyEntities.Add(one2ManyEntity); entity.Persist(transaction); transaction.Commit(); transaction = CreateTransaction(connection); DirtyCheckTestRootEntity loadedEntity = new DirtyCheckTestRootEntity(); LoadEntityWithId(transaction, loadedEntity, id); loadedEntity.One2ManyEntities.Clear(); loadedEntity.Persist(transaction); transaction.Commit(); transaction = CreateTransaction(connection); bool hasOne2Many = ExistsOne2ManyChild(transaction, id); transaction.Commit(); connection.Close(); Assert.IsFalse(hasOne2Many); } catch (System.Exception e) { LogManager.GetLogger(typeof(DbGateDirtyCheckTest)).Fatal(e.Message, e); Assert.Fail(e.Message); } }