private static void CommitNewPhase1(SqlDatabaseContext sqlDatabaseContext, HashSet <DatabaseTransactionContextAcquisition> acquisitions, IObjectsByIdCache cache, TransactionContext transactionContext, Dictionary <TypeAndTransactionalCommandsContext, InsertResults> insertResultsByType, Dictionary <TypeAndTransactionalCommandsContext, IReadOnlyList <DataAccessObject> > fixups) { var acquisition = transactionContext.AcquirePersistenceTransactionContext(sqlDatabaseContext); acquisitions.Add(acquisition); var persistenceTransactionContext = acquisition.SqlDatabaseCommandsContext; foreach (var j in cache.GetNewObjects()) { var key = new TypeAndTransactionalCommandsContext(j.Key, persistenceTransactionContext); var currentInsertResults = persistenceTransactionContext.Insert(j.Key, j.Value.Values); if (currentInsertResults.ToRetry.Count > 0) { insertResultsByType[key] = currentInsertResults; } if (currentInsertResults.ToFixUp.Count > 0) { fixups[key] = currentInsertResults.ToFixUp; } } }
private static void CommitUpdated(SqlDatabaseContext sqlDatabaseContext, IObjectsByIdCache cache, HashSet <DatabaseTransactionContextAcquisition> acquisitions, TransactionContext transactionContext) { var acquisition = transactionContext.AcquirePersistenceTransactionContext(sqlDatabaseContext); acquisitions.Add(acquisition); acquisition.SqlDatabaseCommandsContext.Update(cache.Type, cache.GetObjectsById()); acquisition.SqlDatabaseCommandsContext.Update(cache.Type, cache.GetObjectsByPredicate()); }
private static void CommitUpdated <T>(SqlDatabaseContext sqlDatabaseContext, ObjectsByIdCache <T> cache, HashSet <DatabaseTransactionContextAcquisition> acquisitions, TransactionContext transactionContext) { var acquisition = transactionContext.AcquirePersistenceTransactionContext(sqlDatabaseContext); acquisitions.Add(acquisition); foreach (var j in cache.objectsByIdCache) { acquisition.SqlDatabaseCommandsContext.Update(j.Key, j.Value.Values); } if (cache.objectsByIdCacheComposite != null) { foreach (var j in cache.objectsByIdCacheComposite) { acquisition.SqlDatabaseCommandsContext.Update(j.Key, j.Value.Values); } } }