sql >> Databasteknik >  >> RDS >> Mysql

C# Entity Framework:Nyckelord stöds inte:'port'

Argumentet för den använda basen DbContext konstruktör kallas nameOrConnectionString . Därför stöder den ett namn på en anslutningssträng från konfigurationsfilen, eller som i ditt fall en faktisk anslutningssträng.

Problemet med den senare är att den inte tillåter att ange leverantörens namn som med den förra som kommer från konfigurationen, i vilket fall EF använder den som anges i defaultConnectionFactory konfigurationselement, som i ditt fall är System.Data.Entity.Infrastructure.SqlConnectionFactory , med andra ord - Sql Server , därav port stöds inte undantag.

Det finns flera sätt att lösa problemet.

(A) Ändra defaultConnectionFactory konfiguration:

<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6"></defaultConnectionFactory>

(B) Använd namngiven konfigurationsanslutningssträng och ange explicit leverantören:

<connectionStrings>
    <add name="MyDB" providerName="MySql.Data.MySqlClient" connectionString="server=myservername;port=3306;uid=myaccount;database=mydb;pwd=mypwd123" />
</connectionStrings>

och ändra konstruktorn till

public MyDB()
{
    // ...
}

eller om namnet är ett annat än din DbContext härlett klassnamn:

public MyDB() : base(connection_string_name)
{
    // ...
}

(C) Använd DbConfigurationTypeAttribute :

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


  1. Släpp MySQL-databaser som matchar ett jokertecken?

  2. Unik begränsning med villkor i MYSQL

  3. OracleException (0x80004005) vid anslutning till Oracle Database

  4. MySQL 8.0 - Klienten stöder inte autentiseringsprotokoll som begärs av servern; överväg att uppgradera MySQL-klienten