Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Fakturačný systém v C # .NET - LocalDB a Entity Framework

V tomto tutoriálu sa naučíme vytvárať lokálnu databázu pre desktopovú aplikáciu a jej namapovanie na objekty pomocou Entity Framework. Pôjde o jednoduché účtovníctvo. Je požadovaná aspoň základná znalosť databáz, SQL a práca s kolekciami.

Sql CE

Do vydania Visual Studia 2013 sa pre malé databázy desktopových programov používal SQL Server Compact Edition - jednoduchá verzia SQL serveru tvorená iba DLL súbory. Nepodporuje pohľady, uložené procedúry, triggery a ďalšie. To nám u malej DB pre jednoduché ukladanie dát väčšinou stačí. Inštalačný súbor SQL CE má iba okolo 2MB.

LocalDB

Od VS2013 nejde štandardne vytvoriť .sdf databázy pre SQL CE. Už sa s CE nepočíta, aj keď to ide obísť pluginy. Preto si ukážeme, ako vytvoriť lokálnu databázu LocalDB. Tá je už plnohodnotná (ako SQL server Express) a pre jej spustenie na bežnom PC (bez VS a SQL severu) musíme nainštalovať + - 30MB inštalačný súbor. Viď. tady (ENG).

Vytvorenie databázy

Vytvoríme si nový konzolový projekt. Pre pridanie databázového súboru máme iba jednu možnosť - súbor mdf.

Pridanie databázového súboru v C# .NET - Databázy v C # - ADO.NET

Nastavíme property databázy, aby sa nám databáza prepísala len pri zmene jej štruktúry a nie dát.

Vlastnosti databázy v C# .NET - Databázy v C # - ADO.NET

Tvorba tabuliek pre fakturačný systém

Majme tabuľku faktúra, ktorá má dva cudzie kľúče na tabuľku osoba. Tá reprezentuje dodávateľa alebo odberateľa.

Vytvoríme novú tabuľku cez Server Explorer.

Vytvorenie novej databázovej tabuľky - Databázy v C # - ADO.NET

Tabuľky môžeme naklikať alebo priamo napísať v SQL.

Tvorba databázových tabuliek vo Visual Studio - Databázy v C # - ADO.NET

Samotnej SQL

CREATE TABLE [dbo].[Person]
(
    [Id] INT NOT NULL PRIMARY KEY IDENTITY,
    [Name] NVARCHAR(100) NULL,
    [Surname] NVARCHAR(100) NOT NULL,
    [ICO] INT NULL,
    [DIC] NVARCHAR(20) NULL,
    [Street] NVARCHAR(100) NOT NULL,
    [City] NVARCHAR(100) NOT NULL,
    [PSC] INT NOT NULL,
    [Email] NVARCHAR(50) NOT NULL,
    [IsDeleted] TINYINT NOT NULL DEFAULT 0
)

CREATE TABLE [dbo].[Invoice]
(
    [Id] INT NOT NULL PRIMARY KEY IDENTITY,
    [Supplier] INT NOT NULL,
    [Customer] INT NOT NULL,
    [Price] INT NOT NULL,
    [Service] NVARCHAR(200) NOT NULL,
    [Date] DATETIME NOT NULL,
    [InvoiceNumber] INT NOT NULL,
    [IsDeleted] TINYINT NOT NULL DEFAULT 0,
    CONSTRAINT [FK_Supplier] FOREIGN KEY ([Supplier]) REFERENCES [Person]([Id]),
    CONSTRAINT [FK_Customer] FOREIGN KEY ([Customer]) REFERENCES  [Person]([Id])
)

Parameter IDENTITY pridá autoinkrement primárneho kľúča. DEFAULT 0 nastaví defaultná hodnotu na 0. Prepojenie cudzieho kľúča s primárnym by vám malo byť jasné.

Entity Framework

Databáze máme hotovú. Teraz potrebujeme pristupovať k DB objektovo.

Do projektu pridáme nový item ADO.NET Entity Data Model. Automaticky nám vygeneruje triedy a ich vzťahy podľa DB. Je tu ešte možnosť - vybrať EF DbContext Generator, ale tým sa tu nebudeme zaoberať (podľa napísaných tried pristupuje k DB alebo DB môže i vygenerovať).

Entity Framework v C# .NET - Databázy v C # - ADO.NET

Vyberieme generovanie z databázy.

Entity Framework v C# .NET - Databázy v C # - ADO.NET

Vyberieme našu databázu

Entity Framework v C# .NET - Databázy v C # - ADO.NET

Vyberieme tabuľky do ktorých chceme pristupovať, zaškrtneme generovanie množných čísel u názvov objektov a klikneme na finish.

Entity Framework v C# .NET - Databázy v C # - ADO.NET

Zobrazí sa diagram našej databázy. Premenujeme si názvy referencií (Person1, Invoices1) nech sa v tom potom vyznáme.

Entity Framework v C# .NET - Databázy v C # - ADO.NET

Používanie Entity Framework

Použitie EF je veľmi jednoduché. Vytvoríme si inštanciu triedy DbInvoiceEntities. Tá obsahuje kolekcia záznamov jednotlivých tabuliek. Kolekcia môžeme filtrovať, prehľadávať atď. Viz. tunajšie tutoriály.

Pridanie nového záznamu.

DbInvoiceEntities db = new DbInvoiceEntities();

Person newPerson = new Person();
newPerson.Name = "Jméno";
newPerson.Surname = "Příjmení";
newPerson.Street = "Ulice";
newPerson.City = "Město";
newPerson.PSC = 73601;
newPerson.ICO = 78321456;
newPerson.DIC = "CZ78321456";
newPerson.Email = "[email protected]";

db.Persons.Add(newPerson);
db.SaveChanges();

Pokiaľ objektu newPerson nenastavíte nejakú not null property, pri spustení sa zobrazí výnimka.

Entity Framework v C# .NET - Databázy v C # - ADO.NET

Jednoduchý výpis v konzole s hľadaním.

Console.WriteLine("Persons: ");
foreach (Person p in db.Persons)
{
    Console.WriteLine(p.Surname + " " + p.Name + ", city: " + p.City);
}
Console.WriteLine(Environment.NewLine);

Console.WriteLine("Invoices: ");
foreach (Invoice i in db.Invoices)
{
    Console.WriteLine("Price: " + i.Price + ", date: " + i.Date);
}
Console.WriteLine(Environment.NewLine + "Search Pepa: ");

Person foundPerson = db.Persons.FirstOrDefault(p => p.Name.Contains("pepa"));
Console.WriteLine(foundPerson.Surname + " " + foundPerson.Name + ", city: " + foundPerson.City);

Záverom

V tomto tutoriále sme si ukázali, ako sa v C# .NET vytvára a pracuje s lokálnou databázou. Vytvorili sme databázu a ORM pre jednoduchý fakturačný systém. V ďalšom tutoriále pridáme grafické rozhranie skrze Windows Presentation Foundation.

Ak vám niečo nefunguje alebo niečomu nerozumiete, napíšte do diskusie, nech to môžem v článku prípadne poupraviť.


 

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 1883x (10.45 MB)

 

Všetky články v sekcii
Databázy v C # - ADO.NET
Článok pre vás napísal Petr Domes (petrds)
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Programuji v .NET. Ovládám C#, .ASP, WF, WPF, SQL
Aktivity