Beispiel #1
0
        /// <summary>
        /// Elimina una document unit. Rimuove anche i riferimenti dei documenti alla DocumentUnit dalla tabella DocumentUnitChain
        /// </summary>
        /// <param name="idDocumentUnit"></param>
        /// <returns>Ritorna n. di record complessivamente eliminati</returns>
        public static int UdsDeleteDocumentUnit(Guid idDocumentUnit, bool detachDocuments = true)
        {
            EntityProvider provider = DbProvider;

            using (DbTransaction tran = provider.BeginNoSave())
            {
                try
                {
                    //detach dei documenti
                    if (detachDocuments)
                    {
                        var docChain = DbProvider.UdsGetUnitChain(idDocumentUnit);
                        foreach (var item in docChain)
                        {
                            DetachDocument(item.Document);
                        }
                    }

                    provider.UdsDeleteDocumentUnitChain(idDocumentUnit);
                    provider.UdsDeleteDocumentUnit(idDocumentUnit);
                    int count = provider.SaveChanges();
                    tran.Commit();
                    return(count);
                }
                catch
                {
                    try
                    {
                        tran.Rollback();
                    }
                    catch
                    {
                    }
                    throw;
                }
            }
        }