private void modificaMetadatiFotografie(Fotografia foto, MetadatiFoto metadati) { // Se tutti i metadati sono nulli, allora forzo l'eliminazione degli stessi. // Se invece almeno uno è pieno, setto solo quello (cioè vado in aggiunta a quelli eventualmente // già esistenti sulla foto bool forzaNullo = metadati.isEmpty(); modificaMetadatiFotografie(foto, metadati, forzaNullo); }
private void modificaMetadatiFotografie(Fotografia foto, MetadatiFoto metadati, bool forzaNullo) { // L'entità è sicuramente staccata //UnitOfWorkScope.CurrentObjectContext.Fotografie.Attach( foto ); Fotografia f = foto; try { OrmUtil.forseAttacca <Fotografia>(ref f); } catch (Exception) { } //Consento la modifica anche di valori nulli //if( !String.IsNullOrWhiteSpace( metadati.didascalia ) ) if (metadati.usoDidascalia) { if (String.IsNullOrWhiteSpace(metadati.didascalia)) { foto.didascalia = null; } else { foto.didascalia = metadati.didascalia.Trim().ToUpper(); // pulisco spazi e converto in maiuscolo } } else { if (forzaNullo) { foto.didascalia = null; } } if (metadati.usoFaseDelGiorno) { if (metadati.faseDelGiorno != null) { foto.faseDelGiorno = (short)metadati.faseDelGiorno; } else { foto.faseDelGiorno = null; } } else { if (forzaNullo) { foto.faseDelGiorno = null; } } if (metadati.usoEvento) { foto.evento = metadati.evento; } else { if (forzaNullo) { foto.evento = null; } } OrmUtil.cambiaStatoModificato(f); }
public bool modificaMetadatiFotografie(IEnumerable <Fotografia> fotografie, MetadatiFoto metadati) { bool esito = false; try { // riattacco l'entità che non si sa mai if (metadati.evento != null) { try { Evento e = metadati.evento; OrmUtil.forseAttacca <Evento>(ref e); } catch (Exception ee) { _giornale.Debug("Potenziale errore", ee); } } foreach (Fotografia f in fotografie) { Fotografia fotografia = f; try { OrmUtil.forseAttacca(ref fotografia); } catch (Exception ee) { _giornale.Debug("Potenziale errore", ee); fotografia = UnitOfWorkScope.currentDbContext.Fotografie.Single(f2 => f2.id == f.id); } #if DEBUG String didascaliaNew = null; if (metadati.usoDidascalia) { if (!String.IsNullOrWhiteSpace(metadati.didascalia)) { didascaliaNew = metadati.didascalia.TrimEnd().ToUpper(); } } string strDidascaliaOld = fotografia.didascalia; string strFaseDelGiornoOld = fotografia.faseDelGiorno == null ? "empty" : FaseDelGiornoUtil.valoreToString(fotografia.faseDelGiorno); string strEventoOld = fotografia.evento == null ? "empty" : fotografia.evento.descrizione; string strFaseDelGiornoNew = metadati.faseDelGiorno == null ? "empty" : metadati.faseDelGiorno.ToString(); string strEventoNew = metadati.evento == null ? "empty" : metadati.evento.descrizione; String msg = String.Format("Modificati metadati: {0} da: dida:{1} faseGG:{2} evento:{3} in dida:{4} faseGG:{5} evento:{6}", fotografia.ToString(), strDidascaliaOld, strFaseDelGiornoOld, strEventoOld, didascaliaNew, strFaseDelGiornoNew, strEventoNew ); #endif modificaMetadatiFotografie(fotografia, metadati); #if DEBUG _giornale.Debug(msg); #endif } UnitOfWorkScope.currentDbContext.SaveChanges(); _giornale.Debug("Modifica metadati salvataggio eseguito. Ora committo la transazione"); _giornale.Info("Commit metadati andato a buon fine"); esito = true; } catch (Exception eee) { _giornale.Error("Modifica metadati", eee); esito = false; _giornale.Error("Impossibile modificare metadati", eee); } return(esito); }