sql >> Database >  >> RDS >> PostgreSQL

C# SqlConnection-uitzondering:trefwoord niet ondersteund 'Poort'

SqlConnection is specifiek voor SQL Server. U zou NpgsqlConnection . moeten gebruiken om een ​​Postgres-verbinding te gebruiken, wat betekent dat u de verwijzingen naar de Postgres-assemblies nodig hebt.

Maar u bent van plan om in de toekomst naar een andere provider te gaan, dus probeer de generieke basisklassen in uw code te gebruiken om de impact van die verhuizing te minimaliseren. Bijvoorbeeld:

var connString = "Host=myserver;Username=mylogin;Password=mypass;Database=mydatabase";
using (DbConnection conn = new NpgsqlConnection(connString))
{
    conn.Open()
    using (DbCommand command = conn.CreateCommand())
    {
        // etc
    }
}

Op deze manier hoeft u bij het omwisselen alleen maar NpgsqlConnection te vervangen in uw oplossing met SqlConnection . Als u DbProviderFactory (er staat een goed voorbeeld in) dan kan dat, maar in feite bespaar je alleen jezelf deze enkele zoekopdracht/vervanging, verwijder je de verwijzingen en geeft je een nieuwe versie van de code vrij.

Ik stel voor te plaatsen de verbindingsreeks in het configuratiebestand in plaats van code (zoals getoond in de vraag) om te voorkomen dat het op meerdere plaatsen staat, en het gemakkelijker te maken om te veranderen zonder opnieuw te hoeven bouwen.

En het kan natuurlijk zijn dat u implementatiespecifieke details in de SQL zelf moet corrigeren.



  1. Wat is de reden dat de transactiecontext door een andere sessie wordt gebruikt?

  2. verwijder dubbele rijen en moet er één van allemaal in mysql bewaren

  3. Is er een snelkoppeling voor SELECT * FROM?

  4. Is het echt beter om genormaliseerde tabellen te gebruiken?