Saltar al contenido

C # Entity Framework: palabra clave no admitida: ‘puerto’

Nuestros mejores programadores han agotado sus reservas de café, buscando a tiempo completo por la resolución, hasta que Fátima halló el hallazgo en Gitea y ahora la comparte contigo.

Solución:

El argumento de la base utilizada DbContext se llama constructor nameOrConnectionString. Por lo tanto, admite un nombre de conexión. string desde el archivo de configuración, o como en su caso una conexión real string.

El problema con el último es que no permite especificar el nombre del proveedor como con el primero proveniente de la configuración, en cuyo caso EF usa el especificado en el defaultConnectionFactory elemento de configuración, que en su caso es System.Data.Entity.Infrastructure.SqlConnectionFactory, en otras palabras – Servidor SQL, por lo tanto, la port excepción no admitida.

Hay varias formas de solucionar el problema.

(A) Cambie el defaultConnectionFactory configuración:


(B) Utilice la conexión de configuración nombrada string y especificar explícitamente el proveedor:


    

y cambia el constructor a

public MyDB()

    // ...

o si el nombre es diferente al tuyo DbContext nombre de la clase derivada:

public MyDB() : base(connection_string_name)

    // ...

(C) Uso DbConfigurationTypeAttribute:

[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class MyDB : DbContext

    // ...

Tuve este problema mientras desarrollaba una aplicación web en Core 2. Tuve que cambiar la conexión de base de datos predeterminada utilizada de SqlServer a MySql en el archivo Startup.cs donde está configurada la aplicación.

ingrese la descripción de la imagen aquí

El error similar al mencionado anteriormente se produce al trabajar con el núcleo y la base de datos de ASP.net. El proveedor de base de datos predeterminado con el núcleo de ASP.net es SQL Server pero, en caso de que esté utilizando un proveedor diferente, por ejemplo, PostgreSQL y no haya escrito o configurado correctamente el código DBContext en startup.cs

Por ejemplo: el siguiente código está escrito con la intención de conectarse a PostgresSQL, luego dará como resultado un error ArgumentException: palabra clave no admitida: ‘puerto’.

public void ConfigureServices(IServiceCollection services)

   services.AddMvc();
   var connection = @"Server=localhost;Port=5432;Database=NewDB;User Id=xxxxx;[email protected]
;"; services.AddDbContext(options => options.UseSqlServer(connection)); // ...

Y la razón es que el usuario está intentando conectarse a PostgreSQL pero cambió la opción predeterminada UseSQLServer después de configurar PostgreSQL string.

Para solucionar el problema, cambie la opción


options.UseSqlServer (conexión)) -> options.UseNpgsql (conexión))


Comentarios y valoraciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *