sql >> Databáze >  >> RDS >> Mysql

C# Entity Framework:Klíčové slovo není podporováno:'port'

Argument použitého základu DbContext konstruktor se nazývá nameOrConnectionString . Podporuje tedy název připojovacího řetězce z konfiguračního souboru, nebo jako ve vašem případě skutečný připojovací řetězec.

Problém s pozdější je, že neumožňuje zadat jméno poskytovatele stejně jako u prvního pocházejícího z konfigurace, v takovém případě EF používá tu uvedenou v defaultConnectionFactory konfigurační prvek, kterým je ve vašem případě System.Data.Entity.Infrastructure.SqlConnectionFactory , jinými slovy - Sql Server , tedy port nepodporovaná výjimka.

Existuje několik způsobů, jak problém vyřešit.

(A) Změňte defaultConnectionFactory konfigurace:

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

(B) Použijte pojmenovaný konfigurační připojovací řetězec a určete explicitně poskytovatele:

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

a změňte konstruktor na

public MyDB()
{
    // ...
}

nebo pokud se název liší od vašeho DbContext odvozený název třídy:

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

(C) Použijte DbConfigurationTypeAttribute :

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


  1. Looping Over Result Sets v MySQL

  2. Oracle – ORA-06502:PL/SQL:numerická nebo hodnotová chyba (DBMS_OUTPUT)

  3. Jaké jsou rozdíly mezi SQL a MySQL

  4. Správa uživatelských účtů, role, oprávnění, autentizace PHP a MySQL - 4. část