Versiones anteriores de Entity Framework

La primera versión de Entity Framework se publicó en 2008, como parte de .NET Framework 3.5 SP1 y Visual Studio 2008 SP1.

A partir de la versión EF4.1, se ha distribuido como el Paquete NuGet EntityFramework, actualmente uno de los paquetes más populares en NuGet.org.

Entre las versiones 4.1 y 5.0, el paquete NuGet EntityFramework extendió las bibliotecas de EF que se entregaban como parte de .NET Framework.

A partir de la versión 6, EF se convirtió en un proyecto de código abierto y también se movió completamente fuera de banda desde .NET Framework. Esto significa que, al agregar el paquete NuGet EntityFramework versión 6 a una aplicación, obtendrá una copia completa de la biblioteca EF que no depende de los bits de EF que se incluyen como parte de .NET Framework. Esto ayudó a acelerar un poco el ritmo de desarrollo y entrega de nuevas características.

En junio de 2016, publicamos EF Core 1.0. EF Core se basa en un nuevo código base y está diseñado como una versión más ligera y extensible de EF. Actualmente EF Core es el principal foco de desarrollo para el equipo de Entity Framework en Microsoft. Esto significa que no hay nuevas características principales planeadas para EF6. Sin embargo, EF6 todavía se mantiene como un proyecto de código abierto y un producto de Microsoft compatible.

Esta es la lista de versiones anteriores, en orden cronológico inverso, con información sobre las nuevas características que se introdujeron en cada versión.

Actualización de EF Tools para Visual Studio 2017 15.7

En mayo de 2018 se publicó una versión actualizada de EF6 Tools como parte de Visual Studio 2017 15.7. Incluye mejoras para algunas de las áreas problemáticas más habituales:

  • Correcciones de varios errores de accesibilidad de la interfaz de usuario
  • Solución alternativa para la regresión del rendimiento de SQL Server al generar modelos a partir de bases de datos existentes #4
  • Compatibilidad para la actualización de modelos más grandes en SQL Server #185

Otra mejora de esta versión nueva de EF Tools es que ahora instala el runtime de EF 6.2 al crear un modelo en un proyecto nuevo. Con versiones anteriores de Visual Studio, es posible usar el runtime de EF 6.2 (así como cualquier versión anterior de EF) mediante la instalación de la versión correspondiente del paquete NuGet.

EF 6.2.0

El runtime de EF 6.2 para NuGet se publicó en octubre de 2017. Gracias en gran medida a los esfuerzos de la comunidad de colaboradores de código abierto, EF 6.2 incluye bastantes correcciones de errores y mejoras de producto.

Esta es una breve lista de los cambios más importantes que afectan al runtime de EF 6.2:

  • Reducción del tiempo de inicio al cargar los primeros modelos de código finalizados desde una caché persistente #275
  • API fluida para definir índices #274
  • DbFunctions.Like() para habilitar la escritura de consultas LINQ que se traducen en LIKE en SQL #241
  • Migrate.exe ahora admite la opción -script #240
  • EF6 ahora puede trabajar con valores de clave generados por una secuencia en SQL Server #165
  • Lista de actualización de errores transitorios de la estrategia de ejecución de SQL Azure #83
  • Error: al volver a intentar consultas o comandos SQL, se produce un error "SqlParameter ya está incluido en otro elemento SqlParameterCollection" #81
  • Error: la evaluación de DbQuery.ToString() a menudo agota el tiempo de espera en el depurador #73

EF 6.1.3

El runtime de EF 6.1.3 para NuGet se publicó en octubre de 2015. Esta versión solo contiene correcciones de defectos y regresiones de alta prioridad notificados en la versión 6.1.2. Las correcciones incluyen:

  • Consulta: Regresión en EF 6.1.2: OUTER APPLY introducido y consultas más complejas para relaciones 1:1 y cláusula "let"
  • Problema de TPT con ocultar la propiedad de clase base en la clase heredada
  • DbMigration.Sql produce un error cuando la palabra "go" está contenida en el texto
  • Creación de una marca de compatibilidad para la compatibilidad con UnionAll e Intersect flattening
  • La consulta con varios Includes no funciona en la versión 6.1.2 (funcionando en 6.1.1)
  • Excepción "Tiene un error en la sintaxis SQL" después de actualizar de EF 6.1.1 a 6.1.2

EF 6.1.2

El runtime de EF 6.1.2 para NuGet se publicó en diciembre de 2014. Esta versión consiste principalmente en la corrección de errores. También aceptamos un par de cambios notables de los miembros de la comunidad:

  • Los parámetros de caché de consultas se pueden configurar desde el archivo app/web.configuration
    <entityFramework>
      <queryCache size='1000' cleaningIntervalInSeconds='-1'/>
    </entityFramework>
    
  • Los métodos SqlFile y SqlResource de DbMigration permiten ejecutar un script de SQL almacenado como archivo o recurso incrustado.

EF 6.1.1

El runtime de EF 6.1.1 para NuGet se publicó en junio de 2014. Esta versión contiene correcciones para problemas que se han encontrado varias personas. Entre otros:

  • Diseñador: Error al abrir EF5 edmx con precisión decimal en el diseñador EF6
  • La lógica de detección de instancias predeterminada para LocalDB no funciona con SQL Server 2014

EF 6.1.0

El runtime de EF 6.1.0 se publicó en NuGet en marzo de 2014. Esta actualización menor incluye un número significativo de nuevas características:

  • La consolidación de herramientas proporciona una manera coherente de crear un nuevo modelo de EF. Esta característica amplía el asistente para Entity Data Model de ADO.NET para admitir la creación de modelos de Code First, incluida la ingeniería inversa de una base de datos existente. Estas características estaban disponibles anteriormente en calidad Beta en EF Power Tools.
  • El control de errores de confirmación de transacciones proporciona el CommitFailureHandler que hace uso de la capacidad recién introducida para interceptar las operaciones de transacción. CommitFailureHandler permite la recuperación automática de errores de conexión mientras se confirma una transacción.
  • IndexAttribute permite especificar índices colocando un atributo [Index] en una propiedad (o propiedades) en el modelo de Code First. A continuación, Code First creará un índice correspondiente en la base de datos.
  • La API de asignación pública proporciona acceso a la información que EF tiene sobre cómo se asignan propiedades y tipos a columnas y tablas de la base de datos. En versiones anteriores, esta API era interna.
  • La capacidad de configurar interceptores a través del archivo App/Web.config permite agregar interceptores sin volver a compilar la aplicación.
  • System.Data.Entity.Infrastructure.Interception.DatabaseLogger es un nuevo interceptor que facilita el registro de todas las operaciones de base de datos en un archivo. En combinación con la característica anterior, esto le permite fácilmente activar el registro de las operaciones de la base de datos para una aplicación implementada, sin necesidad de volver a compilar.
  • Se ha mejorado la detección de cambios del modelo de migraciones para que las migraciones con scaffolding sean más precisas; también se ha mejorado el rendimiento del proceso de detección de cambios.
  • Mejoras en el rendimiento, incluidas las operaciones de base de datos reducidas durante la inicialización, optimizaciones para la comparación de igualdad nula en consultas LINQ, generación de vistas más rápida (creación de modelos) en más escenarios y materialización más eficaz de entidades rastreadas con varias asociaciones.

EF 6.0.2

El runtime de EF 6.0.2 para NuGet se publicó en diciembre de 2013. Esta versión de revisión se limita a corregir los problemas que se introdujeron en la versión de EF6 (regresiones en rendimiento o comportamiento desde EF5).

EF 6.0.1

El runtime de EF 6.0.1 se publicó en NuGet en octubre de 2013 simultáneamente con EF 6.0.0, ya que este último se insertó en una versión de Visual Studio que había bloqueado unos meses antes. Esta versión de revisión se limita a corregir los problemas que se introdujeron en la versión de EF6 (regresiones en rendimiento o comportamiento desde EF5). Los cambios más importantes fueron corregir algunos problemas de rendimiento durante el proceso de preparación para los modelos de EF. Esto era importante ya que el rendimiento de preparación era un área de enfoque en EF6 y estos problemas negaban algunas de las otras mejoras de rendimiento realizadas en EF6.

EF 6.0

El runtime de EF 6.0.0 para NuGet se publicó en octubre de 2013. Esta es la primera versión en la que se incluye un runtime completo de EF en el paquete NuGet EntityFramework, que no depende de los bits de EF que forman parte de .NET Framework. Mover las partes restantes del entorno de ejecución al paquete NuGet requería un número de cambios importantes para el código existente. Consulte la sección Actualización a Entity Framework 6 para obtener más información sobre los pasos manuales necesarios para actualizar.

Esta versión incluye numerosas características nuevas. Las siguientes características funcionan para los modelos creados con Code First o EF Designer:

  • Consulta y guardado asíncrono agrega compatibilidad con los patrones asíncronos basados en tareas que se introdujeron en .NET 4.5.
  • La resistencia de conexión permite la recuperación automática de errores de conexión transitorios.
  • La configuración basada en código le ofrece la opción de realizar la configuración (que se realizó tradicionalmente en un archivo de configuración) en el código.
  • La resolución de dependencias presenta compatibilidad con el patrón de localizador de servicios y hemos factorizado algunas partes de la funcionalidad que se pueden reemplazar por implementaciones personalizadas.
  • El registro de interceptación/SQL proporciona bloques de creación de bajo nivel para la interceptación de operaciones de EF con un registro de SQL simple basado en la parte superior.
  • Las mejoras de capacidad de prueba facilitan la creación de dobles de prueba para DbContext y DbSet al usar un marco ficticio o escribir sus propios dobles de prueba.
  • DbContext puede crearse ahora con una DbConnection que ya esté abierta lo que habilita escenarios en los que sería útil que la conexión pudiera estar abierta al crear el contexto (como compartir una conexión entre componentes en los que no se puede garantizar el estado de la conexión).
  • La compatibilidad mejorada con transacciones proporciona compatibilidad con una transacción externa al marco, así como formas mejoradas de crear una transacción dentro del marco.
  • Enumeraciones, tipos de datos espaciales y mejor rendimiento en .NET 4.0 al mover los componentes principales que solían estar en .NET Framework al paquete NuGet de EF, ahora podemos ofrecer compatibilidad con enumeraciones, tipos de datos espaciales y mejoras de rendimiento de EF5 en .NET 4.0.
  • Rendimiento mejorado de Enumerable.Contains en consultas LINQ.
  • Tiempo de preparación mejorado (generación de vistas), especialmente para modelos grandes.
  • Servicio de singularización y pluralización conectable.
  • Ahora se admiten implementaciones personalizadas de Equals o GetHashCode en las clases de entidad.
  • DbSet.AddRange/RemoveRange proporciona una manera optimizada de agregar o quitar varias entidades de un conjunto.
  • DbChangeTracker.HasChanges proporciona una manera fácil y eficaz de ver si hay cambios pendientes de guardar en la base de datos.
  • SqlCeFunctions proporciona un equivalente de SQL Compact a SqlFunctions.

Las siguientes características solo se aplican a Code First:

  • Las convenciones de Code First personalizadas permiten escribir sus propias convenciones para evitar una configuración repetitiva. Proporcionamos una API sencilla para convenciones ligeras, así como algunos bloques de creación más complejos para permitirle crear convenciones más complicadas.
  • Ahora se admite la asignación de Code First para insertar/actualizar/eliminar procedimientos almacenados.
  • Los scripts de migraciones idempotentes permiten generar un script SQL que pueda actualizar una base de datos en cualquier versión hasta la versión más reciente.
  • La tabla de historial de migraciones configurable le permite personalizar la definición de la tabla de historial de migraciones. Esto resulta especialmente útil para los proveedores de bases de datos que requieren que los tipos de datos adecuados, etc. se especifiquen para que la tabla Historial de migraciones funcione correctamente.
  • Varios contextos por base de datos quita la limitación anterior de un modelo de Code First por base de datos cuando se usan migraciones o cuando Code First crea automáticamente la base de datos.
  • DbModelBuilder.HasDefaultSchema es una nueva API de Code First que permite configurar el esquema de base de datos predeterminado para un modelo de Code First en un solo lugar. Anteriormente, el esquema predeterminado de Code First se codificaba de forma rígida en "dbo" y la única manera de configurar el esquema al que pertenecía una tabla era a través de la API ToTable.
  • El método DbModelBuilder.Configurations.AddFromAssembly permite agregar fácilmente todas las clases de configuración definidas en un ensamblado cuando se usan clases de configuración con Code First Fluent API.
  • Las operaciones de migraciones personalizadas le permiten agregar operaciones adicionales que se usarán en las migraciones basadas en código.
  • El nivel de aislamiento de transacción predeterminado se cambia a READ_COMMITTED_SNAPSHOT para las bases de datos creadas mediante Code First, lo que permite una mayor escalabilidad y menos interbloqueos.
  • Los tipos de entidad y complejos ahora se pueden anidar en clases.

EF 5.0

El runtime de EF 5.0.0 para NuGet se publicó en agosto de 2012. En esta versión se presentan algunas características nuevas, como la compatibilidad con enumeraciones, las funciones con valores de tabla, los tipos de datos espaciales y varias mejoras de rendimiento.

El Diseñador de Entity Framework en Visual Studio 2012 también introduce la compatibilidad con diagramas múltiples por modelo, el coloreado de formas en la superficie de diseño y la importación por lotes de procedimientos almacenados.

Esta es una lista de contenido que hemos reunido específicamente para la versión de EF 5:

EF 4.3.1

El entorno de ejecución de EF 4.3.1 se publicó en NuGet en febrero de 2012 poco después de EF 4.3.0. Esta versión de revisión incluía algunas correcciones de errores en la versión de EF 4.3 e introdujo una mejor compatibilidad con LocalDB para los clientes que usan EF 4.3 con Visual Studio 2012.

Esta es una lista de contenido que se combina específicamente para la versión de EF 4.3.1, la mayoría del contenido proporcionado para EF 4.1 también se aplica a EF 4.3:

EF 4.3

El runtime de EF 4.3.0 para NuGet se publicó en febrero de 2012. Esta versión incluía la nueva característica Migraciones de Code First que permite cambiar incrementalmente una base de datos creada por Code First a medida que evoluciona el modelo de Code First.

Esta es una lista de contenido que se combina específicamente para la versión de EF 4.3, la mayoría del contenido proporcionado para EF 4.1 también se aplica a EF 4.3:

EF 4.2

El runtime de EF 4.2.0 para NuGet se publicó en noviembre de 2011. Esta versión incluye correcciones de errores en la versión de EF 4.1.1. Dado que esta versión solo incluía correcciones de errores, podría haber sido la versión de revisión de EF 4.1.2, pero optamos por pasar a la versión 4.2 para permitirnos alejarnos de los números de versión de revisión basados en fechas que usamos en las versiones 4.1.x y adoptar el estándar de Versionamiento Semántico para el control de versiones semánticas.

Esta es una lista de contenido que se combina específicamente para la versión de EF 4.2, el contenido proporcionado para EF 4.1 también se aplica a EF 4.2:

EF 4.1.1

El runtime de EF 4.1.10715 para NuGet se publicó en julio de 2011. Además de corregir errores, esta versión de revisión introdujo algunos componentes para facilitar el uso de herramientas en tiempo de diseño para trabajar con un modelo de Code First. Estas migraciones de Code First (incluidas en EF 4.3) y EF Power Tools usan estos componentes.

Observará el número de versión 4.1.10715 extraño del paquete. Usábamos versiones de revisiones basadas en fechas antes de decidirnos a adoptar el Versionamiento Semántico. Piense en esta versión como EF 4.1 revisión 1 (o EF 4.1.1).

Esta es una lista de contenido que hemos reunido para la versión 4.1.1:

EF 4.1

El runtime de EF 4.1.10331 fue el primero en publicarse en NuGet, en abril de 2011. Esta versión incluía la API de DbContext simplificada y el flujo de trabajo de Code First.

Observará el extraño número de versión, 4.1.10331, que en realidad debería haber sido 4.1. Además, hay una versión 4.1.10311 que debería haber sido 4.1.0-rc ("rc" significa "release candidate" o "versión candidata para lanzamiento"). Usábamos versiones de revisiones basadas en fechas antes de decidirnos a adoptar el Versionamiento Semántico.

Esta es una lista de contenido que hemos reunido para la versión 4.1. La mayor parte sigue aplicándose a versiones posteriores de Entity Framework:

EF 4.0

Esta versión se incluyó en .NET Framework 4 y Visual Studio 2010, en abril de 2010. Las nuevas características importantes de esta versión incluyen compatibilidad con POCO, asignación de claves externas, carga diferida, mejoras en la capacidad de prueba, generación de código personalizable y el flujo de trabajo de Model First.

Aunque fue la segunda versión de Entity Framework, se llamó EF 4 para alinearse con la versión de .NET Framework con la que se distribuía. Después de esta versión, empezamos a hacer que Entity Framework estuviera disponible en NuGet y adoptamos el versionamiento semántico, puesto que ya no estábamos atados a la versión de .NET Framework.

Tenga en cuenta que algunas versiones posteriores de .NET Framework se han entregado con actualizaciones significativas de los bits de EF incluidos. De hecho, muchas de las nuevas características de EF 5.0 se implementaron como mejoras en estos bits. Sin embargo, para racionalizar el artículo de control de versiones para EF, seguimos haciendo referencia a los bits de EF que forman parte de .NET Framework como tiempo de ejecución de EF 4.0, mientras que todas las versiones más recientes constan del paquete NuGet EntityFramework.

EF 3.5

La versión inicial de Entity Framework se incluyó en .NET 3.5 Service Pack 1 y Visual Studio 2008 SP1, publicado en agosto de 2008. Esta versión proporcionó compatibilidad básica con O/RM mediante el flujo de trabajo de Database First.