sql >> Database teknologi >  >> RDS >> Mysql

C# Entity Framework:Nøgleord ikke understøttet:'port'

Argumentet for den brugte base DbContext konstruktør kaldes nameOrConnectionString . Derfor understøtter den et navn på en forbindelsesstreng fra konfigurationsfilen, eller som i dit tilfælde en egentlig forbindelsesstreng.

Problemet med den senere er, at den ikke tillader specificering af udbyderens navn som med førstnævnte, der kommer fra konfigurationen, i hvilket tilfælde EF bruger den, der er angivet i defaultConnectionFactory konfigurationselement, som i dit tilfælde er System.Data.Entity.Infrastructure.SqlConnectionFactory , med andre ord - Sql Server , deraf port ikke understøttet undtagelse.

Der er flere måder at løse problemet på.

(A) Skift defaultConnectionFactory konfiguration:

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

(B) Brug navngivet konfigurationsforbindelsesstreng og angiv eksplicit udbyderen:

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

og ændre konstruktøren til

public MyDB()
{
    // ...
}

eller hvis navnet er anderledes end din DbContext afledt klassenavn:

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

(C) Brug DbConfigurationTypeAttribute :

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


  1. importere sql-fil til en database ved hjælp af wamp

  2. JDBC PreparedStatement resulterer i MySQL-syntaksfejl

  3. Bruger seneste aktiviteter - PHP MySQL

  4. Flere fremmednøgler til samme tabel Gas Orm