Overview
En esta sección, puede identificar los cambios esenciales que debe realizar en su aplicación cuando actualice su proveedor a una nueva versión.
Antes de actualizar, realiza las siguientes acciones:
Asegúrate de que la nueva versión sea compatible con la versión del servidor de MongoDB a la que se conecta tu aplicación y con la versión de .NET en la que funciona tu aplicación. Ver el Compatibilidad página para esta información.
Resuelve cualquier cambio disruptivo entre la versión actual del proveedor que utiliza tu aplicación y la versión de actualización planificada en la sección Cambios disruptivos.
Cambios radicales
Un cambio disruptivo es una modificación de una convención o comportamiento a partir de una versión específica del proveedor. Este tipo de cambio puede evitar que tu aplicación funcione correctamente si no se aborda antes de actualizar el proveedor.
Los cambios disruptivos de esta sección están categorizados según la versión del proveedor que los introdujo. Al actualizar las versiones del proveedor, resuelva todos los cambios disruptivos entre la versión actual y la versión de actualización. Por ejemplo, si está actualizando el proveedor de la versión v8.0 a v8.5, aborde todos los cambios disruptivos desde la versión posterior a v8.0, incluyendo todos los enumerados en la versión8.5.
Versión 8.30.0 cambio disruptivo
La versión 8.3.0 del proveedor principal de EF introduce un cambio importante que corrige el manejo de propiedades que aceptan valores NULL configuradas con una representación BSON alternativa. En versiones anteriores, las configuraciones establecidas por
[BsonRepresentation] No se aplicaron el atributo o la API fluida HasBsonRepresentation().
Puede tomar medidas para abordar esta discrepancia de una de dos maneras:
Si no es crucial utilizar la representación BSON alternativa, remueve la configuración de la aplicación antes de que se inicie.
Como alternativa, puede actualizar los elementos afectados a la nueva representación. Como parte del proceso de actualización, utilice el método
updateManypara cada colección de MongoDB afectada a fin de reescribir cualquier propiedad o elemento que acepte valores NULL en la representación BSON deseada mediante la operación$convert.Por ejemplo, puedes convertir un elemento
dateOfBirthde una colección llamadapeoplede un BSONdatea BSONintcomo se muestra en el siguiente código:db.people.updateMany( { dateOfBirth: {$type: "date" } }, [ { $set: { dateOfBirth: { $convert: { input: "$dateOfBirth", to: "int", onNull: null } } } } ] )
Versión 8.2.0 cambio disruptivo
La versión 8.2.0 del proveedor de EF Core no introduce directamente cambios importantes. Sin embargo, el controlador .NET/C# subyacente introduce muchos cambios potencialmente importantes en la versión3.0 v, que podrían afectar a su aplicación. Para obtener más información sobre los cambios importantes en la versión v3.0 del controlador .NET/C#, consulte la guía "Actualizar a 3 la versión. "0 en la documentación del controlador .NET/C#.
Versión 8.1.0 cambio disruptivo
Se actualizó el proveedor principal de EF para que ejecute todos los cambios como transacciones de MongoDB. Si su aplicación usa MongoDB Server anterior a la versión 76005.0 o no se ejecuta en un conjunto de réplicas, debe realizar los siguientes cambios:
Si tu aplicación está configurada para una versión anterior a MongoDB Server v5.0, debes actualizar a MongoDB Server v5.0 o posterior.
Si tu aplicación se ejecuta en un servidor independiente, debes reconfigurar tu servidor independiente en un set de réplicas de instancia única. Para obtener más información sobre cómo reconfigurar tu servidor autónomo, consulta Convertir un mongod autogestionado autónomo en un set de réplicas en el manual de MongoDB Server.
Si su aplicación se ejecuta en un entorno de contenedores, cambie a un contenedor de conjunto de réplicas de instancia única si hay uno disponible.
Para evitar problemas de instantáneas durante las transacciones, llame al método
EnsureCreated()oEnsureCreatedAsync()durante el inicio de su aplicación, en lugar de crear la colección o la base de datos implícitamente.Nota
Llamar al
EnsureCreated()métodoEnsureCreatedAsync()o genera un error si la aplicación se ejecuta en un clúster compartido. Las aplicaciones que se ejecutan en clústeres libres y compartidos no deben llamar a estos métodos.Si no quieres asegurar concurrencia optimista con transacciones, puedes desactivar las transacciones automáticas configurando
Database.AutoTransactionBehavior = AutoTrasactionBehavior.Neveren tu subclaseDbContextdurante la configuración de la aplicación.El formato de almacenamiento por defecto de GUID se cambió del formato binario
CSharpLegacyal formatoStandard. Si tu base de datos contiene GUID existentes que no están en formatoStandard, recomendamos convertirlos al formatoStandard.El
CamelCaseElementNameConventionconvierte las reglas de mayúsculas y minúsculas de las entidades propias según el nombre de su propiedad en lugar de su nombre de clase. Si la aplicación utiliza laCamelCaseElementNameConvention, la forma en que se escriben los datos puede cambiar.
Para obtener más información sobre los cambios importantes en esta versión, consulte la sección Cambios importantes del repositorio del proveedor en GitHub.