public bool Insert <TEntity>(IEntityInfo info, TEntity entity, IMDbTransaction transaction) where TEntity : class { try { var collection = MongoDatabase().GetCollection <TEntity>(info.EntityName); collection.InsertOne(entity); return(true); } catch (MongoDuplicateKeyException e) { _trace.TraceEvent(TraceEventType.Critical, 0, $"Duplicate key founded. Error on insert {info.EntityName} \n\n{e}"); throw; } catch (Exception e) { transaction.Abort(); _trace.TraceEvent(TraceEventType.Critical, 0, $"Error on insert {info.EntityName} \n\n{e}"); throw; } }
public bool Delete <TEntity>(IEntityInfo info, TEntity entity, IMDbTransaction transaction) where TEntity : class { try { var collection = MongoDatabase().GetCollection <TEntity>(info.EntityName); var keyValuePair = KeyValuePairOf(entity, info); var result = collection.DeleteOne(Builders <TEntity> .Filter.Eq("_id", keyValuePair.Value)); if (result.DeletedCount == 1) { return(true); } return(false); } catch (Exception e) { transaction.Abort(); _trace.TraceEvent(TraceEventType.Critical, 0, $"Error on delete {info.EntityName} \n\n{e}"); throw; } }