È la più recente versione di MS Enterprise Library compatibile con le versioni più vecchie come 3.1

StackOverflow https://stackoverflow.com/questions/1929994

Domanda

Questo progetto corrente Sono stato assegnato utilizza la versione 3.1 di livelli:

Microsoft.Practices.EnterpriseLibrary.Common;
Microsoft.Practices.EnterpriseLibrary.Data;

Per quanto cerco di arrivare a conoscere meglio le capacità del Ent Lib, io sono in esecuzione in un sacco di articoli e doc su varie versioni (3.1, 4.0, e 5.0 credo).

In generale non le versioni più recenti lavorano con codice applicativo scritto per una versione precedente del Ent Lib? Non ho esaminato tutto il codice sorgente in questa applicazione ho ereditato ma penso che solo le "basi" del Data Access Application Block vengono utilizzati. Ecco un tipico esempio di codice:

        public override List<Erx.Action> GetAll(bool bIsActive)
    {
        Database db = null;
        DbCommand cmd = null;
        List<Erx.Action> lst = null;
        IDataReader iRdr = null;
        try
        {
            db = DatabaseFactory.CreateDatabase();
            cmd = db.GetStoredProcCommand("Mst_GetAllCorrectiveAction");
            db.AddInParameter(cmd, "@CorrectiveActionID", DbType.Int32, -1);
            db.AddInParameter(cmd, "@IsActive", DbType.Boolean, bIsActive);
            iRdr = db.ExecuteReader(cmd);

            lst = new List<Erx.Action>();

            while (iRdr.Read())
            {
                Action objAction = new Action();
                objAction.CorrectiveAction = iRdr["CorrectiveAction"].ToString();
                objAction.CorrectiveActionID = int.Parse(iRdr["CorrectiveActionID"].ToString());
                objAction.IsActive = (bool)iRdr["IsActive"];
                lst.Add(objAction);
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            db = null;
            iRdr.Close();
            if (cmd != null)
            {
                cmd.Dispose(); cmd = null;
            }
        }
        return lst;
    }

Francamente, questo non sembra offrire molto al di là di ADO.Net regolare, ma forse le versioni più recenti rendere le cose più semplici (ho sentito alcune cose molto bene con l'Unità).

È stato utile?

Soluzione

Ho appena installato Ent Lib 4.1 e scavato da vicino il doc e trovato questo nella "Introduzione al Data Access Application Block":

Funzionalità modificate, versione 3.1 e successive

In generale, le applicazioni create utilizzando versioni precedenti del Data Access Application Block funzionerà con questa release, senza la necessità di eventuali modifiche al codice. Potrebbe essere necessario aggiornare i riferimenti per indicare i nuovi assemblaggi e per aggiornare i file di configurazione per fare riferimento alla versione corretta dei complessi. Tuttavia, sono state apportate alcune modifiche per il Data Access Application Block nella versione 3.1 (maggio 2007), che possono influenzare le applicazioni scritte per le versioni precedenti se si aggiorna alla versione corrente di Enterprise Library. Le seguenti sezioni descrivono questi cambiamenti.

Il .NET Framework 2.0 TransactionScope Classe Per sfruttare il .NET Framework 2.0 TransactionScope, ci sono stati cambiamenti ad alcuni dei metodi della classe di database in versione di Enterprise Library dalla versione 3.1 in poi. Questi metodi, come ExecuteNonQuery, sono stati modificati per riconoscere quando un'istanza TransactionScope è attivo sostituendo il metodo GetConnection con il metodo GetOpenConnection. Se avete scritto una classe che eredita dalla classe di database, è necessario riscrivere il codice per prendere questi cambiamenti in considerazione. Se si continua a utilizzare il metodo GetConnection, riceverete un avviso del compilatore. Inoltre, se l'applicazione utilizza il metodo ExecuteXmlReader, potrebbe essere necessario riscrivere il codice per provare a vedere se un'istanza TransactionScope è attiva prima di chiudere una connessione. Per ulteriori informazioni, vedere Uso della classe TransactionScope. Per un esempio di come utilizzare il metodo ExecuteXMLReader, vedere Recupero più righe come XML. text forte SQL Server Compact Edition Enterprise Library 3.1 - Maggio 2007 e versioni successive supporta SQL Server Compact Edition (CE). SQL Server CE fornisce le caratteristiche essenziali di un database relazionale ed è destinato ad applicazioni desktop e mobili che necessitano di un archivio dati locale, ma non necessitano di tutte le funzionalità di SQL Server. Per ulteriori informazioni, consultare la sezione "Utilizzo di SQL Server CE" in Creazione di un oggetto di database.

Sto ancora cercando di ottenere un senso di come veramente utile questo DAAB è. Sembra un enorme quantità di lettura del documento è necessario per finire a scrivere un po 'meno codice rispetto a quello altrimenti necessario con ADO.NET non-aiutata dal DAAB. Credo che se si volesse fornire per un interruttore più facile da dire, Oracle [da MS SQL Server), questo è un modo utile per configurare le cose.

Altri suggerimenti

Se si dispone di test di unità, porta a nuove e correre a vedere, se avete ReSharper può analizzare la vostra soluzione in VStudio e sottolineare l'errors.It vi porterà tempo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top