Readdy Write  
0,00 €
Your View Money
Views: Count
Self 20% 0
Your Content 60% 0

Users by Links 0
u1*(Content+Views) 10% 0
Follow-Follower 0
s2*(Income) 5% 0

Count
Followers 0
Login Register as User

So fügt man einer WPF Anwendung eine Datenbank funktionell hinzu

16.11.2018 (👁16469)

Wenn man schon eine WPF Anwendung mit einer lokalen Datenbank vorhanden hat, dann geht man im Solution Explorer

 

Daten-Model Verbindung hinzufügen

Auf Projekt->Add->New Item

 

 

Add New Item

Installed->Visual C#->Data

ADO NET Entity Data Model

Obwohl man ja nur Entity Framework installieren will

Name: dbModel

 

Entity Data Model Wizard->

Choose Model Content

Hier Empfehlung: 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.

 

Entity Data Model Wizard->

Choose Your Data Connection

Unter Save connection settings in App.Config as

dbConnectionString

(als Vorschlag)

 

Entity Data Model Wizard

Choose Your Database Objects and Settings

Unter Tables ->dbo alle Tabellen markieren, welche von der Server Datenbank in das WPF Projekt übernommen werden sollen als Daten-Klassen oder Daten Model

Unter Model Namespace : dbModels  für Datenbank db Models (Tabellen, Views Abfragen alles in der Struktur)

dbModels

 

Datenmodel im WPF Projekt

Dann sind alle Tabellen direkt in der Datenbank als Datenmodel vorhanden

Man findet die Tabellen und Abfragen im Daten-Model wie unter MVC Model

In der .edmx Datei.

Hier ist die Namensgebungung dbModel.edmx, abgeleitet von dem Model-View-Controller: Daten-Model der Datenbank

 

DBContext

Unter der Datei dbModel.Context.cs findet man nun die Datenbank-Connection als ConnectionsString und die Anbindung an das Datenmodel also lokale WPF Tabellen zur SQL Server Datenbank.

Das nennt man dann : DbContext (in WPF, Asp.Net MVC und .Core)

 

Den DbContext findet man in der Datei:

dbModel.edmx->dbModel.Context.ttt->dbModel.Context.cs

 

Automatisch erzeugte Verbindung dbContext

Die Benennung dbConnectionString benenne ich dann meistens um in die übliche Application_Database_Context oder hier App_DbContext

Hier im Projekt als

App_dbContext

benannt

{

    using System;

    using System.Data.Entity;

    using System.Data.Entity.Infrastructure;

    

    public partial class App_dbContext : DbContext

    {

        public App_dbContext()

            : base("name=dbConnectionString")

        {

        }

    

        protected override void OnModelCreating(DbModelBuilder modelBuilder)

        {

            throw new UnintentionalCodeFirstException();

        }

    

        public virtual DbSet<tblBase_Abwesenheitsgruende> tblBase_Abwesenheitsgruende { getset; }

        public virtual DbSet<tblBase_Feiertage> tblBase_Feiertage { getset; }

        public virtual DbSet<tblBase_Maschinen> tblBase_Maschinen { getset; }

        public virtual DbSet<tblBase_Mitarbeitergruppen> tblBase_Mitarbeitergruppen { getset; }

        public virtual DbSet<tblBase_Schichtmodell> tblBase_Schichtmodell { getset; }

    }

}

 

 

 

Zugriff auf Daten und Tabellen

Durch die obere Verbindung hat man nun den kompletten einfachen Zugriff von WPF Anwendung auf die SQL Server Tabellen

 

So erstellt man einen Datenbank zugriff

Falls keine Verbindung von der WPF Anwendung zur SQL Server via Compact Database besteht, wird eine Connetion geöffnet

App_dbContext db = new App_dbContext();

if (db.Database.Connection.State == System.Data.ConnectionState.Closed || 

db.Database.Connection.State == System.Data.ConnectionState.Broken) await db.Database.Connection.OpenAsync();

 

So einfach greift man auf eine Tabelle zu

var data = db.tblBase_Feiertage.FirstOrDefault(); //id => id.IDFeiertag == 1

if (data == null)

{

..

}

 

Und so einfach fügt man einen Datensatz zur Tabelle hinzu

//--< Add() >--

data = new tblBase_Feiertage();

data.Feiertag = "neu";

data.dtCreated = DateTime.Now;

db.tblBase_Feiertage.Add(data);

//--</ Add() >--

 

 

 

Datenzugriff als Code Beispiel in C#

Mit Linq

public async void load_Data()

        {

            App_dbContext db = new App_dbContext();

            if (db.Database.Connection.State == System.Data.ConnectionState.Closed || db.Database.Connection.State == System.Data.ConnectionState.Broken) await db.Database.Connection.OpenAsync();

 

            try

            {

                var data = db.tblBase_Feiertage.FirstOrDefault(); //id => id.IDFeiertag == 1

                if (data == null)

                {

                    //--< Add() >--

                    data = new tblBase_Feiertage();

                    data.Feiertag = "neu";

                    data.dtCreated = DateTime.Now;

                    db.tblBase_Feiertage.Add(data);

                    //--</ Add() >--

                }

                else

                {

                    ctlFeiertag.Text = data.F;

                    //--< Update() >--

                    //data.dtEdit = DateTime.Now;

                    //--</ Update() >--

                }

                await db.SaveChangesAsync();

 

            }

            catch (Exception ex)

            {

 

            }

 

 

        }