C# .NET Core PostgreSQL Connect
In diesem Tutorial zeige ich wie man eine C# .NET Core PostgreSQL Connection erstellt. Der Artikel ist analog zur C# .NET Core MySQL Connection erstellt und soll schnell und einfach zeigen wie man die eigene C# Applikation schnell und einfach durch eine Datenbank erweitert.
C# .NET Core PostgreSQL Connect
Im MySQL Artikel bin ich noch davon ausgegangen als Entwickler hat man bereits eine laufende MySQL Datenbank. Da dieses DB-System bei jedem 0815 Hoster Standard ist sollte jeder der einen Webspace besitzt in 5 Minuten eine neue Datenbank erstellen können. Sofern du also keine PostgreSQL Datenbank laufen hast einfach meinem Tutorial zum PostgreSQL Docker Container folgen.
Web API Projekt
Anders als beim C# .NET Core MySQL Artikel erstelle ich dieses mal keine .NET Core Konsolenanwendung sondern gleich ein Web API Projekt. Ein solches wird später als Microservice mit der PostgreSQL Datenbank als Docker Container genutzt. Die Schritte für die Verbindung mit der Datenbank können aber auch in einer Konsolenanwendung verwendet werden. Den Source Code findest du auf meiner GitHub Seite.
Unter Visual Studio funktioniert das so:
- eine ASP.NET Core-Webanwendung erstellen
- im letzten Schritt als Typ API einstellen und es wird die bekannte WeatherForecast API erstellt
Nuget
Neben den Assemblies für das Entity Framework Core habe ich auch noch das Npgsql Paket für die Verbindung mit einer PostgreSQL Datenbank eingebunden:
Entity Framework und Postgres
Anders als im Artikel zu MySQL werde ich nun die API Beispielapplikation um eine Datenbank erweitern. Dazu verwendet der clevere .NET Core Entwickler das Entity Framework. Alles was wir von der Datenbank benötigen ist ein Connection String. Die Tabellen und Spalten werden vom Code durch das Framework automatisch erstellt beziehungsweise während der Entwicklung laufend angepasst. Das funktioniert wie folgt:
- Connection String hinzufügen
in der appsettings.json Datei wird ein neuer Eintrag für die Datenbank wie folgt erstellt:"ConnectionStrings": { "MyConnection" : "User ID = postgres;Password=postgres;Server=192.168.0.128;Port=5432;Database=TestDB;Integrated Security=true;Pooling=true;" },
Ich habe den Connection String „MyConnection“ benannt. Er enthält die zur Verbindung notwendige Daten wie die IP Adresse meines Docker Servers, ein Benutzer und ein Passwort. Zusätzlich habe ich noch den Namen der zu erstellenden Datenbank angegeben „TestDB“ und einige PostgreSQL spezifische Optionen.
- Npgsql einbinden
in der Startup.cs habe ich in der ConfigureServices Methode folgende Zeile hinzugefügt und dort das Entity Framework eingebunden:services.AddEntityFrameworkNpgsql().AddDbContext<MyContext>(opt => opt.UseNpgsql(Configuration.GetConnectionString("MyConnection")));
Ich füge das Entity Framework als Service hinzu und definiere und füge einen neuen DbContext hinzu. Dieser ist vom Typ MyContext und wird mit dem zuvor definierten Connection String MyConnection initialisiert.
- im Ordner Models definiere ich den Context
using Microsoft.EntityFrameworkCore; namespace PostgreSQLConnect.Models { public class MyContext : DbContext { public MyContext(DbContextOptions options) : base(options) { } public DbSet<User> Users { get; set; } } }
Der Context gibt im Konstruktor die Parameter der übergeordneten Klasse mit. Jede Tabelle die man benutzen will wird als Property vom Typ DbSet erstellt.
- und die Modelle für jede einzelne Tabelle (aktuell nur User)
namespace PostgreSQLConnect.Models { public class User { public int Id { get; set; } public string Name { get; set; } public string Email { get; set; } } }
Die User Tabelle ist simpel. Neben einem Primärschlüssel Id gibt es noch einen Namen und eine Email Adresse als String. Das Entity Framework erzeugt automatisch aus den Variablen die im Namen ein „Id“ haben einen Primärschlüssel.
Datenstruktur automatisch erstellen lassen
Mit dem .NET Core Entity Framework lässt sich nun aus dem Datenbank Connection String und dem Datenmodell automatisch die dazu passende Datenbank samt Tabelle erstellen. Das funktioniert rein über die Kommandozeile:
Nachdem das EntityFramework das Datenbank Update ausgeführt hat ist wie zu erwarten eine neue Datenbank samt den definierten Datenmodellen (Tabellen) angelegt worden:
Fazit
Ich habe gezeigt wie man mit dem Entity Framework Core einen Datenbank Context anlegt und einen Connection String für eine PostgreSQL Datenbank erstellt. Außerdem habe ich ein Datenmodell in C# angelegt und daraus automatisiert eine Datenbank samt Tabelle erstellt.
Teil 1 | Teil 2