sql >> Database >  >> RDS >> Mysql

C# Entity Framework:Trefwoord niet ondersteund:'poort'

Het argument van de gebruikte basis DbContext constructor heet nameOrConnectionString . Daarom ondersteunt het een naam van een verbindingsreeks uit het configuratiebestand, of zoals in uw geval een echte verbindingsreeks.

Het probleem met de laatste is dat het niet toestaat om de providernaam te specificeren zoals met de eerste afkomstig uit de configuratie, in welk geval EF degene gebruikt die is gespecificeerd in de defaultConnectionFactory configuratie-element, dat in uw geval System.Data.Entity.Infrastructure.SqlConnectionFactory is , met andere woorden - Sql Server , vandaar de port niet ondersteunde uitzondering.

Er zijn verschillende manieren om het probleem op te lossen.

(A) Wijzig de defaultConnectionFactory configuratie:

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

(B) Gebruik de benoemde configuratieverbindingsreeks en specificeer expliciet de provider:

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

en verander de constructor in

public MyDB()
{
    // ...
}

of als de naam anders is dan uw DbContext afgeleide klassenaam:

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

(C) Gebruik DbConfigurationTypeAttribute :

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


  1. SQL niet gelijk aan () Operator voor beginners

  2. MS SQL Server kruistabelbeperking

  3. COUNT(*) retourneert meerdere rijen in plaats van slechts één

  4. Kan een nummer worden gebruikt om een ​​MySQL-tabelkolom een ​​naam te geven?