/// <summary> /// Executes <see cref="DeleteQuery{T}"/>>, removes object from database and cache /// </summary> /// <param name="stmt"></param> /// <typeparam name="TEntity"></typeparam> public void Delete <TEntity>(DeleteQuery <TEntity> stmt) { var conn = _connection; if (conn.State != ConnectionState.Open) { conn.Open(); } using var cmd = conn.CreateCommand(); cmd.CommandText = stmt.AsSqlString(); cmd.Transaction = _transaction; foreach (var(type, id, value) in stmt.GetParameters()) { var param = cmd.CreateParameter(); param.Value = value; param.DbType = type; param.ParameterName = id; cmd.Parameters.Add(param); } var affectedRows = cmd.ExecuteNonQuery(); }