public void TestBinaryBulkDeleteByKeyViaPhysicalTable() { using (var connection = GetConnection()) { // Prepare var entities = Helper.CreateBulkOperationLightIdentityTables(10, true); var primaryKeys = entities.Select(entity => entity.Id); var tableName = "BulkOperationIdentityTable"; // Act var result = NpgsqlConnectionExtension.BinaryBulkInsert <BulkOperationLightIdentityTable>(connection, tableName, entities: entities, identityBehavior: BulkImportIdentityBehavior.KeepIdentity); // Act result = NpgsqlConnectionExtension.BinaryBulkDeleteByKey(connection, tableName, primaryKeys: primaryKeys, pseudoTableType: BulkImportPseudoTableType.Physical); // Assert Assert.AreEqual(entities.Count(), result); // Assert var countResult = connection.CountAll(tableName); Assert.AreEqual(0, countResult); } }
/// <summary> /// /// </summary> /// <param name="tableName"></param> /// <param name="dbFields"></param> /// <param name="properties"></param> /// <param name="entityType"></param> /// <param name="identityBehavior"></param> /// <param name="dbSetting"></param> /// <returns></returns> public static Action <NpgsqlBinaryImporter, TEntity> Get(string tableName, IEnumerable <DbField> dbFields, IEnumerable <ClassProperty> properties, Type entityType, BulkImportIdentityBehavior identityBehavior, IDbSetting dbSetting = null) { var includeIdentity = (identityBehavior == BulkImportIdentityBehavior.KeepIdentity); var primaryDbField = dbFields?.FirstOrDefault(dbField => dbField.IsPrimary); var isPrimaryAnIdentity = primaryDbField?.IsIdentity == true; var includePrimary = isPrimaryAnIdentity == false || (isPrimaryAnIdentity && identityBehavior == BulkImportIdentityBehavior.KeepIdentity); var matchedProperties = NpgsqlConnectionExtension.GetMatchedProperties(dbFields, properties, includePrimary, includeIdentity, dbSetting); var mappings = matchedProperties.Select(property => new NpgsqlBulkInsertMapItem(property.PropertyInfo.Name, property.GetMappedName())); return(GetFunc(tableName, mappings, entityType)); }