public async Task <WrapperSimpleTypesDTO> ModificarArchivoAnuncio(int codigoTipoArchivo, int codigoAnuncio, int?codigoArchivo, Stream sourceStream) { using (SportsGoEntities context = new SportsGoEntities(false)) using (DbContextTransaction transaction = context.Database.BeginTransaction()) { ArchivosRepository archivoRepo = new ArchivosRepository(context); Archivos archivoParaCrear = new Archivos { CodigoTipoArchivo = codigoTipoArchivo, ArchivoContenido = new byte[] { 0, 1, 2 } }; archivoRepo.CrearArchivo(archivoParaCrear); WrapperSimpleTypesDTO wrapper = new WrapperSimpleTypesDTO(); wrapper.NumeroRegistrosAfectados = await context.SaveChangesAsync(); await archivoRepo.ModificarArchivoContenidoStream(archivoParaCrear.Consecutivo, sourceStream); if (wrapper.NumeroRegistrosAfectados > 0 || archivoParaCrear.Consecutivo > 0) { wrapper.Exitoso = true; wrapper.ConsecutivoCreado = archivoParaCrear.Consecutivo; wrapper.ConsecutivoArchivoCreado = archivoParaCrear.Consecutivo; AnunciantesRepository anuncioRepo = new AnunciantesRepository(context); // Meto el consecutivo del archivo generado por el EF por la creacion Anuncios anuncio = new Anuncios { Consecutivo = codigoAnuncio, CodigoArchivo = archivoParaCrear.Consecutivo }; Anuncios anuncioExistente = await anuncioRepo.ModificarCodigoArchivoAnuncio(anuncio); // Elimino el viejo archivo if (codigoArchivo.HasValue && codigoArchivo > 0) { Archivos archivoParaBorrar = new Archivos { Consecutivo = codigoArchivo.Value }; archivoRepo.EliminarArchivo(archivoParaBorrar); } wrapper.NumeroRegistrosAfectados += await context.SaveChangesAsync(); transaction.Commit(); } return(wrapper); } }