Entity Framework zu WPF
Wie fügt man EF Entity Framework zu einer WPF Anwendung zu?
Unter dem WPF Projekt->References ->Manage NugetPackages
EntityFramework
Entity Framework is Microsoft's recommended data access technology for new applications.
In der WPF Anwendung.
Dort wo man den EntityFramework verwenden möchte muss man im Using Bereich eintragen
using System.Data.Entity; //Entity Framework |
Bestehende Datenbank zur WPF hinzufügen
DBFirst
Auf das WPF Projekt im Solutions-Explorer gehen
Dann direkt oder in einem Unterordner auf New Item
Und unter dem Dialog: Add New Item auf den Bereich Data->ADO.NET Entity Data Model
A project item for creating an Ado.Net Entity Data Model
EF Designer from database
Auswahl auf EF Designer from database
Creates a model in the EF Designer based on an existing database. You can choose the database connection, settings for the model, and database objects to include in the model. The classes your application will interact with are generated from the model.
Dann eine bestehende Datenbank auswählen. In diesem Beispiel habe ich eine LocalDB oder Service-based Database direkt in das Projekt gelegt.
Diese lokale Projekt Datenbank wird in der Regel auch vorgeschlagen.
Im unteren Feld unter : Save connection settings in App.Config.cs eine passende allgemein verständliche Context-Namen einsetzen wie dbContext oder Datenbank-Context
Dann die Tabellen und Views auswählen.
Server Views verhalten sich in der Datenbank wie Tabellen ohne Schreibrechte sondern Leserechten.
Dadurch wird die Datenbank in der Application
Die Tabellenstruktur findet man unter
Data->Models.edmx->Models.tt (dann die Tabellen)
Man kann nicht direkt in die Datei schreiben, da diese über den Designer erstellt wird.
Die eigentlichen Tabellen befinden sich als c# Klassen Datenmodelle (M) im Untervezeichnis
Zugriff auf die Datenbank in der Anwendung
public static void db_Update_Add_ListRecord(string sURL, string sTitle) { //--------< Add_Record() >-------- var scan = new tbl_Scans(); scan.dtCreated = DateTime.Now; scan.Title = "First Record";
var db = new dbWebScanEntities(); db.tbl_Scans.Add(scan); db.SaveChanges();
// Display all Blogs from the database var query = from r in db.tbl_Scans where r.URLRef==sURL select r; //query = query.Take(1);
foreach (var item in query) { Console.WriteLine(item.Title); } //--------</ Add_Record() >-------- }
|
Wichtige Info zum Verständnis der Datenbank:
Wenn man anschliessend das WPF kompiliert und zur Laufzeit testet, dann wird von der Entwurfs-Datenbank eine Kopie gezogen und in den Ausgabeordner /bin/.. kopiert.
Alle Datenbewegungen werden dann auf die lokale Runtime-Datenbank bezogen und nicht auf die Vorlage der Entwurfsdatenbank.
Die Entwurfsdatenbank hat bei lokalen Datenbank nur die Funktion der Struktur-Gebung
Änderungen durch die Datenbank
Wenn jetzt änderungen an der Datenbank vorgenommen werden, dann werden diese nicht automatisch in die Anwendung übertragen
Das Daten-Modell aktualisieren
Hierzu geht man unter dem Context-Designer auf ->Update Model from Database
Das System erkennt dann automatisch was zu tun ist.
Man wählt die geänderten Daten aus und übernimmt diese.