private static IEntityDAO GetDao(IConnectionProvider conn, IEntity entity, IEntityDaoFactory daoFactory) { if (daoFactory != null) return daoFactory.GetEntityDAO(entity, conn); else return DefaultDaoFactory.GetEntityDAO(entity, conn); }
public void BulkInsert(IConnectionProvider conn, IEntityCollection newEntities, IEntityDaoFactory daoFactory) { if (newEntities.Count == 0) return; DataTable newRecords = newEntities.ToDataTable(); var bulkCopy = BuildSqlBulkCopy(conn, newEntities.IDbTable.TableName, newRecords); bulkCopy.WriteToServer(newRecords); }
public void BulkSave(IConnectionProvider conn, IEntityCollection entitiesToSave, IEntityDaoFactory daoFactory) { IEntityCollection newEntities, changedEntities, removedEntities; SplitCollectionForInsertUpdateAndDeleteOperations(entitiesToSave, out newEntities, out changedEntities, out removedEntities); bool connIsLocal = !conn.IsOpen; if (connIsLocal) conn.OpenConnection(); try { BulkInsert(conn, newEntities, daoFactory); BulkUpdate(conn, changedEntities, daoFactory); BulkDelete(conn, removedEntities, daoFactory); } finally { if (connIsLocal) conn.CloseConnection(); } }
public void BulkDelete(IConnectionProvider conn, IEntityCollection removedEntities, IEntityDaoFactory daoFactory) { if (removedEntities.Count == 0) return; bool connIsLocal = !conn.IsOpen; if (connIsLocal) conn.OpenConnection(); try { foreach (IEntity entity in removedEntities) GetDao(conn, entity, daoFactory).DeleteOne(); } finally { if (connIsLocal) conn.CloseConnection(); } }