public void CarrelloTest1() { using (new UnitOfWorkScope()) { Carrello carrelloTest = recuperaCarrelloPerTest(); gestoreCarrello.caricaCarrello(carrelloTest.id); // Cambio una info nella testata e una descrizione in un riga carrelloTest.note = DateTime.Now.ToString(); // Cambio anche una nota sulle righe per causare foreach (var riga in carrello.righeCarrello) { riga.descrizione = DateTime.Now.ToString(); } int numRigheOrig = carrello.righeCarrello.Count; // ora aggiungo una riga in fondo. Prendo una foto caso che non sia già nel carrello var fotos = carrello.righeCarrello.Select(r => r.fotografia).Distinct(); RigaCarrello riga3 = new RigaCarrello(); riga3.fotografia = UnitOfWorkScope.currentDbContext.Fotografie.AsEnumerable().Except(fotos).First(); riga3.quantita = 1; riga3.fotografo = riga3.fotografia.fotografo; riga3.prodotto = UnitOfWorkScope.currentDbContext.FormatiCarta.First(); riga3.discriminator = RigaCarrello.TIPORIGA_STAMPA; riga3.descrizione = "DACANC"; riga3.nomeStampante = Costanti.NomeStampantePdf; gestoreCarrello.aggiungiRiga(riga3); // Prima salvo senza cambiare niente. gestoreCarrello.salvare(); // ----- // Eseguo una query sql con un altra connessione, per vedere che la riga sia stata aggiunta object[] parametri = { carrello.id }; var cntQuery = UnitOfWorkScope.currentDbContext.Database.SqlQuery <int>("select count(*) from RigheCarrelli where carrello_id = {0}", parametri); int numRigheA = cntQuery.First <int>(); Assert.IsTrue(numRigheA == numRigheOrig + 1); // Ora riprendo il carrello ed elimino la riga 3 gestoreCarrello.caricaCarrello(carrelloTest.id); RigaCarrello rigaDacanc = carrello.righeCarrello.Single(r => r.descrizione == "DACANC"); gestoreCarrello.removeRiga(rigaDacanc); // Eseguo una query sql con un altra connessione, per vedere che ancora non c'è stato il commit cntQuery = UnitOfWorkScope.currentDbContext.Database.SqlQuery <int>("select count(*) from RigheCarrelli where carrello_id = {0}", parametri); int numRigheB = cntQuery.First <int>(); Assert.IsTrue(numRigheB == numRigheA); gestoreCarrello.salvare(); // Eseguo una query sql con un altra connessione, per vedere che la riga sia stata eliminata cntQuery = UnitOfWorkScope.currentDbContext.Database.SqlQuery <int>("select count(*) from RigheCarrelli where carrello_id = {0}", parametri); int numRigheC = cntQuery.First <int>(); Assert.IsTrue(numRigheC == numRigheOrig); } }
public void CarrelloTest3EliminaRiga() { #if COSI_FUNZIONA_BENE Guid guid = new Guid("625a1ed1-6e22-4de7-b8c9-2420de1bcb5e"); using (LumenEntities ctx = new LumenEntities()) { Carrello carrello = ctx.Carrelli .Include("righeCarrello") .Single(r => r.id == guid); int conta = 0; RigaCarrello rigaDacanc = null; foreach (var riga in carrello.righeCarrello) { if (++conta == 2) { rigaDacanc = riga; } } if (rigaDacanc != null) { carrello.righeCarrello.Remove(rigaDacanc); ctx.RigheCarrelli.Remove(rigaDacanc); } ctx.SaveChanges(); } #endif // Cerco un carrello che non sia venduto, con almeno due righe Guid guid = Guid.Empty; using (LumenEntities ctx = new LumenEntities()) { Carrello carrello = ctx.Carrelli .Include("righeCarrello") .Where(c => c.venduto == false && c.righeCarrello.Count > 1) .FirstOrDefault(); if (carrello != null) { guid = carrello.id; } } if (guid != Guid.Empty) { // Carrello carrelloTest = recuperaCarrelloPerTest(); using (GestoreCarrello ges = new GestoreCarrello()) { ges.caricaCarrello(guid); RigaCarrello rigaDacanc = ges.carrello.righeCarrello.AsEnumerable().ElementAt(1); ges.removeRiga(rigaDacanc); ges.salvare(); } } }