예제 #1
0
        public void removeRiga(RigaCarrello rigaDacanc)
        {
            EntityState stato = OrmUtil.getEntityState(rigaDacanc, mioDbContext);

            // Rimuovo l'elemento dalla collezione.
            // Non so perché, ma essendo una relazione identificante, perché EF NON si preoccua di rimuovere anche da disco la riga da solo ??
            // Dovrebbe chiamare la delete sul db, ma non lo fa! ...
            bool test = carrello.righeCarrello.Remove(rigaDacanc);

            if (!test)
            {
                _giornale.Error("Si è cercato di cancellare una riga dal carrello che non esiste. Probabilmente la riga era già stata eliminata dal carrello in precedenza");
                throw new LumenException("La riga non è presente nel carrello");
            }

            // ... per quanto sopra, se l'oggetto era persistente, devo preoccuparmi io di rimuoverlo anche dal dbcontext
            if (isStatoModifica == true && rigaDacanc.id != Guid.Empty)
            {
                if (stato == EntityState.Detached || stato == EntityState.Modified || stato == EntityState.Unchanged)
                {
                    mioDbContext.RigheCarrelli.Remove(rigaDacanc);
                }
            }

            isCarrelloModificato = true;
        }