Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Actualizar la versión del proveedor

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.

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.

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 updateMany para 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 dateOfBirth de una colección llamada people de un BSON date a BSON int como se muestra en el siguiente código:

    db.people.updateMany(
    { dateOfBirth: {$type: "date" } },
    [
    { $set: {
    dateOfBirth:
    { $convert:
    { input: "$dateOfBirth",
    to: "int",
    onNull: null
    }
    }
    }
    }
    ]
    )

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#.

  • 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() o EnsureCreatedAsync() 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étodo EnsureCreatedAsync() 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.Never en tu subclase DbContext durante la configuración de la aplicación.

  • El formato de almacenamiento por defecto de GUID se cambió del formato binario CSharpLegacy al formato Standard. Si tu base de datos contiene GUID existentes que no están en formato Standard, recomendamos convertirlos al formato Standard.

  • El CamelCaseElementNameConvention convierte 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 la CamelCaseElementNameConvention, 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.

Volver

Notas de versión

En esta página