Es la versión más nueva de MS Enterprise Library compatible con versiones anteriores como 3.1

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

Pregunta

Este proyecto actual que me han asignado usa los niveles de la versión 3.1 de:

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

A medida que trato de conocer más sobre las capacidades de la ENT lib, creo que me encuentro con muchos artículos y documentos sobre varias versiones (3.1, 4.0 y 5.0).

En general, ¿funcionan las versiones más nuevas con el código de aplicación escrito para una versión anterior de la ENT lib? No he encuestado todo el código fuente en esta aplicación que he heredado, pero creo que solo se están utilizando los "conceptos básicos" del bloque de aplicaciones de acceso a datos. Aquí hay una pieza de código típica:

        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, esto no parece ofrecer mucho más allá de ADO.net regular, pero tal vez las versiones más nuevas simplifican las cosas (he escuchado algunas cosas muy buenas sobre la unidad).

¿Fue útil?

Solución

Acabo de instalar ENT LIB 4.1 y cavé de cerca en el Doc y lo encontré en la "Introducción al bloque de aplicaciones de acceso a datos":

Características cambiadas, versión 3.1 y posterior

En general, las aplicaciones creadas utilizando versiones anteriores del bloque de aplicaciones de acceso a datos funcionarán con esta versión sin la necesidad de ningún cambio de código. Puede ser necesario actualizar las referencias para referirse a los nuevos ensamblados y actualizar los archivos de configuración para hacer referencia a la versión correcta de los ensamblados. Sin embargo, se realizaron algunos cambios en el bloque de aplicaciones de acceso a datos en la versión 3.1 (mayo de 2007), lo que puede afectar las aplicaciones escritas para versiones anteriores si se actualiza a la versión actual de Enterprise Library. Las siguientes secciones describen estos cambios.

La clase .NET Framework 2.0 Transactionscope Para aprovechar la clase .NET Framework 2.0 Transactionscope, ha habido cambios en algunos de los métodos de clase de base de datos en la versión de la biblioteca Enterprise desde la versión 3.1 en adelante. Estos métodos, como ExecutenQuery, se han modificado para reconocer cuándo una instancia de COBLA de transacciones está activa reemplazando el método GetConnection con el método GetOpenconnection. Si ha escrito una clase que hereda de la clase de base de datos, deberá reescribir su código para tener en cuenta estos cambios. Si continúa utilizando el método GetConnection, recibirá una advertencia del compilador. Además, si su aplicación usa el método ExecuteXMLReader, es posible que deba reescribir su código para probar para ver si una instancia de transaccionescope está activa antes de cerrar una conexión. Para obtener más información, consulte Uso de la clase TransactionScope. Para obtener un ejemplo de cómo usar el método ExecuteXMLReader, consulte recuperar múltiples filas como XML. texto fuerte Edición compacta de SQL Server Enterprise Library 3.1 - mayo de 2007 y posterior admite SQL Server Compact Edition (CE). SQL Server CE proporciona las características esenciales de una base de datos relacional y está destinada a aplicaciones de escritorio y móviles que necesitan un almacén de datos local pero que no requieren la funcionalidad completa de SQL Server. Para obtener más información, consulte la sección "Uso de SQL Server CE" en la creación de un objeto de base de datos.

Todavía estoy tratando de tener una idea de lo verdaderamente útil que es este Daab. Parece que se requiere una gran cantidad de lectura de DOC para terminar escribiendo un poco menos de código del que se requiere con ADO.NET sin ayuda por el DAAB. Supongo que si uno quería proporcionar un cambio más fácil de decir, Oracle [de MS SQL Server), esta es una forma útil de configurar las cosas.

Otros consejos

Si tiene pruebas unitarias, puerto a nuevo y ejecutado y vea, si tiene Resharper, puede analizar su solución en VStudio y señalar los errores. Le tomará tiempo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top