Cursos
Ruta de aprendizaje
Arquitecto de soluciones: diseñar soluciones de Microsoft Power Platform - Training
Descubra cómo un arquitecto de soluciones diseña las soluciones.
Este explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
Importante
Se ha publicado EF Core 6.0. Esta página permanece como un registro histórico del plan.
Como se describe en el proceso de planeamiento de , hemos recopilado información de las partes interesadas en un plan para la versión 6.0 de Entity Framework Core (EF Core). Este plan se actualiza periódicamente para reflejar los ajustes de programación y ámbito.
A diferencia de las versiones anteriores, este plan no intenta cubrir todo el trabajo de la versión 6.0. En su lugar, indica dónde y cómo pretendemos invertir en esta versión, pero con flexibilidad para ajustar el ámbito o extraer el nuevo trabajo a medida que recopilamos comentarios y aprendemos mientras trabajamos en la versión.
Importante
Este plan no es un compromiso. Es un punto de partida que evolucionará a medida que aprendemos más. Algunas cosas que no están planificadas actualmente para la versión 6.0 pueden incorporarse. Algunas cosas actualmente planeadas para la versión 6.0 podrían quedar fuera.
EF Core 6.0 es la próxima versión después de EF Core 5.0 y actualmente está programada para su lanzamiento en noviembre de 2021 al mismo tiempo que .NET 6.
EF Core 6.0 requiere .NET 6. EF Core 6.0 no tiene como destino ninguna versión de .NET Standard; para obtener más información, consulte el futuro de .NET Standard.
EF Core 6.0 no se ejecutará en .NET Framework.
EF Core 6.0 se alineará con .NET 6 como una versión de soporte técnico a largo plazo (LTS).
EF Core 6.0 contendrá un pequeño número de cambios importantes a medida que EF Core y la plataforma .NET sigan evolucionando. Nuestro objetivo es permitir que la gran mayoría de las aplicaciones se actualicen sin interrumpir.
Las siguientes áreas formarán la base de las grandes inversiones en EF Core 6.0.
Como siempre, una entrada importante del proceso de planificación procede de la votación (👍) de características en GitHub. Para EF Core 6.0, tenemos previsto trabajar en las siguientes características muy solicitadas:
Número de seguimiento: 4693
Estado: Completado
Tamaño de camiseta: Grande
Las tablas temporales admiten consultas para los datos almacenados en la tabla en cualquier momento dado, en lugar de solo los datos más recientes almacenados como es el caso de las tablas normales. EF Core 6.0 permitirá crear tablas temporales a través de migraciones, así como permitir el acceso a los datos a través de consultas LINQ.
Inicialmente, el ámbito de este trabajo se limita como se describe en la incidencia. Es posible que añadamos soporte adicional basado en los comentarios durante el lanzamiento.
Número de seguimiento: 4021
Estado: Cortada
Tamaño de camiseta: Mediano
Esta característica presentará un mecanismo común y patrones para la compatibilidad con JSON que cualquier proveedor de base de datos puede implementar. Trabajaremos con la comunidad para alinear las implementaciones existentes para npgsql y Pomelo MySQL, y también agregaremos compatibilidad con SQL Server y SQLite.
Número de seguimiento: 10059
Estado: en curso
Tamaño de camiseta: pequeño
Esta característica permitirá el orden arbitrario de las columnas al crear una tabla con Migraciones o EnsureCreated
. Tenga en cuenta que cambiar el orden de las columnas de una tabla existente requiere que se recompile la tabla y esto no es algo que planeemos admitir en ninguna versión de EF Core.
Aunque EF Core suele ser más rápido que EF6, todavía hay áreas en las que se pueden mejorar considerablemente el rendimiento. Tenemos previsto abordar varias de estas áreas en EF Core 6.0, a la vez que mejoramos nuestra infraestructura y pruebas de rendimiento.
Este tema implicará una gran cantidad de investigación iterativa, que informará de dónde centramos los recursos. Tenemos previsto comenzar con:
Estado: Con ámbito/Completado
Tamaño de camiseta: Mediano
El código base de EF Core ya contiene un conjunto de pruebas comparativas de rendimiento que se ejecutan todos los días. Para la versión 6.0, planeamos mejorar la infraestructura de estas pruebas, así como agregar nuevas pruebas. También se generarán perfiles de escenarios de rendimiento principales y se corregirá cualquier instancia de nivel inferior.
Actualización: se ha mejorado la infraestructura de pruebas y se han agregado nuevas pruebas para admitir el trabajo realizado para EF Core 6. Las mejoras adicionales en esta área están fuera del ámbito de la versión EF Core 6.0.
Rastreado por #1906
Estado: Completado
Tamaño de camiseta: X-Large
Los modelos compilados permitirán la generación de una forma compilada del modelo ef. Esto proporcionará un mejor rendimiento de inicio, así como un rendimiento generalmente mejor al acceder al modelo.
Número de seguimiento: 23611
Estado: Completado
Tamaño de camiseta: X-Large
Durante varios años se han ejecutado los bancos de pruebas de TechEmpower estándar del sector en .NET sobre una base de datos PostgreSQL. El benchmark Fortunes es especialmente relevante para los escenarios de EF. Tenemos varias variaciones de este banco de pruebas, entre las que se incluyen:
El objetivo de EF Core 6.0 es obtener el rendimiento de EF Core para que coincida con el de Dapper en el banco de pruebas TechEmpower Fortunes. (Este es un desafío importante, pero haremos lo mejor para llegar lo más cerca posible).
Número de seguimiento: 10963
Estado: Delimitado/Completado
Tamaño de camiseta: Mediano
EF Core realiza grandes cantidades de generación de código en tiempo de ejecución. Esto es difícil para los modelos de aplicaciones que dependen de la vibración del árbol del enlazador, como .NET MAUI y Blazor, y las plataformas que no permiten la compilación dinámica, como iOS. Continuaremos investigando en este espacio como parte de EF Core 6.0 y realizaremos mejoras dirigidas como podamos. Sin embargo, no esperamos cerrar completamente la brecha en el marco de tiempo de la versión 6.0.
A partir de las investigaciones de realizadas para EF Core 5.0, planeamos ofrecer un soporte mejorado para gestionar las migraciones e implementar bases de datos. Esto incluye dos áreas principales:
Rastreado por #19693
Estado: Completado
Tamaño de camiseta: Mediano
Un paquete de migraciones es un ejecutable autocontenido que aplica migraciones a una base de datos de producción. El comportamiento coincidirá con dotnet ef database update
, pero debe facilitar mucho la implementación de SSH/Docker/PowerShell, ya que todo lo necesario está contenido en el único ejecutable.
Rastreado por #22945
Estado: Cortada
Tamaño de camiseta: Grande
El número de migraciones creadas para una aplicación puede aumentar para convertirse en una carga. Además, estas migraciones se implementan con frecuencia con la aplicación incluso cuando esto no es necesario. En EF Core 6.0, tenemos previsto mejorar esto mediante una mejor administración de herramientas y proyectos o ensamblados. Dos problemas específicos que planeamos abordar son combinar muchas migraciones en una sola y regenerar una instantánea de modelo limpia.
Actualización: la mayor parte del trabajo de esta área se ha recortado durante la versión 6.0 debido a restricciones de recursos.
Cualquier problema o error que esté asignado al hito 6.0.0 está actualmente previsto para esta versión. Esto incluye muchas pequeñas mejoras y correcciones de errores.
Seguimiento por incidencias etiquetadas con "ef6-parity" y en el hito 6.0
Estado: Con ámbito/Completado
Tamaño de camiseta: Grande
EF Core 5.0 admite la mayoría de los patrones de consulta admitidos por EF6, además de los patrones no admitidos en EF6. Para EF Core 6.0, tenemos previsto cerrar la brecha y hacer que las consultas de EF Core admitidas sean un verdadero superconjunto de consultas de EF6 compatibles. Esto se controla mediante la investigación de las diferencias, pero ya se incluyen incidencias de GroupBy como la traducción de GroupBy seguido de FirstOrDefault y consultas SQL sin procesar para tipos primitivos y no asignados.
Actualización: las consultas SQL sin formato para tipos primitivos y desasignados se han interrumpido a partir de la versión 6.0 debido a las restricciones de recursos y los ajustes de prioridad.
Número de seguimiento: 9906
Estado: Cortada
Tamaño de camiseta: Mediano
Anteriormente, la vista de equipo era la propietaria de las entidades, destinadas a la compatibilidad agregada, lo que también sería una aproximación razonable a los objetos de valor. La experiencia ha mostrado que esto no es el caso. Por lo tanto, en EF Core 6.0 tenemos previsto introducir una mejor experiencia centrada en las necesidades de los objetos de valor en el diseño controlado por dominios. Este enfoque se basará en convertidores de valores en lugar de en entidades de propiedad.
Este trabajo está diseñado inicialmente para permitir que los convertidores de valores se mapeen a varias columnas. Es posible que se incorpore soporte adicional en función de los comentarios durante el lanzamiento.
Seguimiento por incidencias etiquetadas con "area-cosmos" y en el hito 6.0
Estado: expandido/completado
Tamaño de camiseta: Grande
Recopilamos activamente comentarios sobre qué mejoras se realizan en el proveedor de Azure Cosmos DB en EF Core 6.0. Actualizaremos este documento a medida que obtengamos más información. Por ahora, asegúrese de votar (👍) para las características de Azure Cosmos DB que necesita.
Actualización: hemos estado realizando un amplio desarrollo de clientes en torno al proveedor de Azure Cosmos DB. Esto ha dado lugar a las siguientes mejoras que se han incorporado en EF Core 6.0:
Actualización: los siguientes problemas se cortaron de la versión 6.0:
Número de seguimiento: 214
Estado: Cortada
Tamaño de camiseta: Mediano
EF Core usa un conjunto de convenciones para crear un modelo a partir de tipos de .NET. Actualmente, el proveedor de base de datos controla estas convenciones. En EF Core 6.0, pretendemos permitir que las aplicaciones se conecten y cambien estas convenciones.
Seguimiento por incidencias etiquetadas con type-bug
en el hito 6.0
Estado: En curso/Con ámbito
Tamaño de camiseta: Grande
Tenemos previsto corregir todos los errores pendientes durante el período de tiempo de EF Core 6.0. Algunas cosas que se deben tener en cuenta:
blocked
.Seguimiento por incidencias etiquetadas con type-enhancement
en el hito 6.0
Estado: Completado
Tamaño de camiseta: Grande
Entre las características varias planeadas para EF 6.0 se incluyen, pero no se limitan a:
Actualización: los siguientes problemas se cortaron de la versión 6.0:
El equipo de EF Core también trabaja en varias tecnologías relacionadas pero independientes. En concreto, tenemos previsto trabajar en:
Seguimiento por incidencias en el repositorio dotnet\runtime etiquetadas con area-System.Data
en el hito 6.0
Estado: Con ámbito/Completado
Tamaño de camiseta: Grande
Este trabajo incluye:
Actualización: los siguientes problemas se cortaron de la versión 6.0:
Seguimiento por incidencias etiquetadas con type-enhancement
y area-adonet-sqlite
en el hito 6.0
Estado: Delimitado/Completado
Tamaño de camiseta: Mediano
Se han planificado varias mejoras pequeñas para Microsoft.Data.Sqlite, incluidas la agrupación de conexiones y las instrucciones preparadas para el rendimiento.
Actualización: las sentencias preparadas han sido eliminadas de la versión 6.0.
Número de seguimiento: 14150
Estado: Completado
Tamaño de camiseta: Grande
Se anotará el código de EF Core para usar tipos de referencia que aceptan valores NULL.
El equipo de EF planea invertir tiempo durante el período de tiempo de EF Core 6.0 experimentando e investigando en dos áreas. Se trata de un proceso de aprendizaje y, como tal, no se planean resultados concretos para la versión 6.0.
Seguimiento en el repositorio de laboratorios de datos de .NET
Estado: en curso
Tamaño de camiseta: En curso
microsoft.Data.SqlClient es un proveedor de bases de datos de ADO.NET completo para SQL Server. Admite una amplia gama de características de SQL Server en .NET Core y .NET Framework. Sin embargo, también es un código base grande y antiguo con muchas interacciones complejas entre sus comportamientos. Esto dificulta la investigación de las posibles mejoras que se podrían realizar con las características más recientes de .NET Core. Por lo tanto, estamos iniciando un experimento en colaboración con la comunidad para determinar qué potencial existe para un controlador de SQL Server de alto rendimiento para .NET.
Importante
La inversión en Microsoft.Data.SqlClient no cambia. Seguirá siendo la manera recomendada de conectarse a SQL Server y SQL Azure, tanto con como sin EF Core. Seguirá admitiendo nuevas características de SQL Server a medida que se introducen.
Estado: en curso
Tamaño de camiseta: En curso
GraphQL ha estado ganando tracción en los últimos años en una variedad de plataformas. Tenemos previsto investigar el espacio y encontrar formas de mejorar la experiencia con .NET. Esto implicará trabajar con la comunidad para comprender y apoyar el ecosistema existente. También puede implicar inversiones específicas de Microsoft, ya sea en forma de contribuciones a trabajos existentes o en el desarrollo de piezas complementarias en el ecosistema de Microsoft.
Estado: en curso
Tamaño de camiseta: En curso
dataVerse es un almacén de datos basado en columnas diseñado para el desarrollo rápido de aplicaciones empresariales. Controla automáticamente tipos de datos complejos como objetos binarios (BLOB) y tiene entidades y relaciones integradas, como organizaciones y contactos. Existe un SDK, pero los desarrolladores pueden beneficiarse de tener un proveedor de EF Core para usar consultas LINQ avanzadas, aprovechar las ventajas de la unidad de trabajo y tener una API de acceso a datos coherente. El equipo considerará diferentes formas de mejorar la experiencia del desarrollador de .NET conectándose a DataVerse.
Seguimiento por problemas etiquetados con consider-for-current-release
Se trata de correcciones de errores y mejoras que no están programadas actualmente para el lanzamiento 6.0, pero que revisaremos en función de los comentarios a lo largo del lanzamiento junto con el progreso realizado en el trabajo mencionado anteriormente. Estos problemas podrían incluirse en EF Core 6.0 y automáticamente convertirse en candidatos para la próxima versión.
Además, durante la planeación siempre se tienen en cuenta los problemas más votados. Eliminar cualquiera de estos problemas en un lanzamiento siempre es doloroso, pero necesitamos un plan realista para los recursos que tenemos. Asegúrese de que ha votado (👍) por las características que necesita.
Sus comentarios sobre la planeación son importantes. La mejor manera de indicar la importancia de un problema es votar (👍) para ese problema en GitHub. Estos datos se introducirán después en el proceso de planeación de la próxima versión.
Comentarios de .NET
.NET es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios:
Cursos
Ruta de aprendizaje
Arquitecto de soluciones: diseñar soluciones de Microsoft Power Platform - Training
Descubra cómo un arquitecto de soluciones diseña las soluciones.
Documentación
Información general sobre las nuevas características de EF Core 6.0
Versiones y planeamiento de EF Core
Versiones actuales de EF Core y detalles de programación o planeación para próximas versiones
Plan para Entity Framework Core 8
Temas y características planeados para EF Core 8