Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

Podobne dokumenty
Baza danych sql. 1. Wprowadzenie

Widoki zagnieżdżone, layout. 1. Wprowadzenie Repozytoria danych

Wprowadzenie do Doctrine ORM

Modele danych walidacja widoki zorientowane na model

Sesje i logowanie. 1. Wprowadzenie

Podstawy technologii WWW

PHP: bazy danych, SQL, AJAX i JSON

Instrukcja laboratoryjna

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

WPROWADZENIE DO BAZ DANYCH

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Laboratorium 7 Blog: dodawanie i edycja wpisów

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

KatMPBSoft - 1 -

Programowanie w Ruby

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Programowanie w Ruby

Instrukcja laboratoryjna cz.6

Microsoft Access materiały pomocnicze do ćwiczeń cz. 1

Uruchamianie bazy PostgreSQL

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

xmlns:prism= c. <ContentControl prism:regionmanager.regionname="mainregion" />

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

PODSTAWOWE POJĘCIA BAZ DANYCH

Aplikacje w środowisku Java

Wprowadzenie do baz danych

Wykład 5: PHP: praca z bazą danych MySQL

Programowanie obiektowe

Programowanie obiektowe

Programowanie w Sieci Internet Python - c. d. Kraków, 28 listopada 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Laboratorium 6 Tworzenie bloga w Zend Framework

Bazy danych. wprowadzenie teoretyczne. Piotr Prekurat 1

Kurs WWW. Paweł Rajba.

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Praca w programie dodawanie pisma.

Microsoft.NET: LINQ to SQL, ASP.NET AJAX

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

DECLARE VARIABLE zmienna1 typ danych; BEGIN

SIECI KOMPUTEROWE I BAZY DANYCH

Instalacja i obsługa aplikacji MAC Diagnoza EW

Db4o obiektowa baza danych wersja.net

Paweł Cieśla. Dokumentacja projektu

STWORZENIE BIBLIOTEKI SŁUŻĄCEJ DO WCZYTYWANIA

Dane wejściowe. Oracle Designer Generowanie bazy danych. Wynik. Przebieg procesu

Laboratorium nr 5. Bazy danych OpenOffice Base.

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Inżynieria Programowania Laboratorium 3 Projektowanie i implementacja bazy danych. Paweł Paduch paduch@tu.kielce.pl

Aplikacje WWW - laboratorium

Wprowadzenie do projektu QualitySpy

Projektowanie baz danych za pomocą narzędzi CASE

ZAPOZNANIE SIĘ ZE SPOSOBEM PRZECHOWYWANIA

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Wykład 8. SQL praca z tabelami 5

PHP 5 język obiektowy

Konwersja bazy Sybase ASA Runtime do Microsoft SQL Server

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Pomoc dla systemu WordPress

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

Diagramy związków encji. Laboratorium. Akademia Morska w Gdyni

Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory.

Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod:

Stworzenie programu KSIĄŻKA ADRESOWA posiadającego funkcjonalności przechowywania danych o osobach dodanych przez użytkownika.

Ajax. 1. Wprowadzenie. 2. Aplikacja serwerowa

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Bazy danych - wykład wstępny

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

Migracja Business Intelligence do wersji 11.0

Programowanie obiektowe

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Temat 3. Projektowanie interfejsu użytkonwnika Kalkulator pierwszy program dla IOS

Budowa aplikacji ASP.NET współpracującej z bazą dany do przeprowadzania ankiet internetowych

Palety by CTI. Instrukcja

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Kostki OLAP i język MDX

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

2017/2018 WGGiOS AGH. LibreOffice Base

Projektowanie systemów baz danych

Budowa aplikacji ASP.NET współpracującej z bazą danych do obsługi przesyłania wiadomości

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

Podstawy technologii WWW

Instrukcja aktualizacji programu Integra 7

Platforma.NET laboratorium 4 Aktualizacja: 15/11/2013. Visual Basic.NET dostęp do bazy danych. Baza Microsoft SQL Server Compact

Programowanie obiektowe

Technologia informacyjna

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

LINQ TO SQL w dużym skrócie jest to zintegrowany język zapytao pozwalający na mapowanie relacyjnych baz danych na model obiektowy.

Migracja Business Intelligence do wersji

Instrukcja do programu Do7ki 1.0

Budowa aplikacji ASP.NET współpracującej z bazą danych do obsługi przesyłania wiadomości

Wdrożenie do projektu

Z pojedynczym obiekcie zasady grupy znajdziemy dwa główne typy ustawień:

Programowanie obiektowe

Instrukcja użytkownika

Materiały do laboratorium MS ACCESS BASIC

Transkrypt:

Baza danych sql 1. Wprowadzenie Do tej pory operowaliście na listach. W tej instrukcji pokazane zostanie jak stworzyć bazę danych. W zadaniu skorzystamy z możliwości utworzenia struktury bazy danych z istniejących modeli danych, dzięki wykorzystaniu narządzi entity framework, który automatycznie utworzy nam skrypty migracyjne SQL wraz z bazą danych. Dodatkowo utworzymy repozytorium generyczne, które pozwoli uniknąć pisania wielokrotnie podobnych zapytań dla identycznych encji bazy danych np. pobierz rekord o zgodnym id. 2. Repozytaria generyczne W pierwszej kolejności musimy trochę zmienić istniejące modele danych, tak aby mogły tworzyć encję bazy danych. W tym celu należy również nadać odpowiednie atrybuty, aby narzędzie generujące skrypt dobrze wiedziało np. które pole jest kluczem głównym, które obcym. a. Interfejs dla Modeli danych W pierwszej kolejności stworzymy interfejs IModel, który odziedziczą wszystkie nasze klasy modeli. Interfejs zawiera deklaracje Id, pozwalając utworzyć generyczne repozytorium ze wspólnym zapytaniem dla wszystkich modeli odnoszącego się do klucza głównego Id. Nadano mu również atrybut [Key] aby generator z całą pewnością potraktował naszą wartość jako klucz główny.

b. generyczne repozytorium Następnie możemy utworzyć generyczne repozytorium. Do repozytorium generycznego nie potrzebujemy żadnego z modeli danych, wystarczy nam jedynie nasz interfejs IModel oraz klasa bazowa DBContext pochodząca z entity framework. Jest to całkowicie uniwersalne repozytorium, gdyż będzie pasować do dowolnego kontekstu bazy danych, o którym nawet jeszcze nie wiemy oraz do dowolnego modelu danych dziedziczącego IModel. Generyczne repozytorium przyjmuje dwa typy <C,T>. C kontekst bazy danych który musi dziedziczyć po klasie DBContext oraz posiadać konstruktor uniwersalny. Wynika to z zapisu where C: DBContext, new() DBContext w skrócie odpowiada za połączenie do bazy oraz za wymianę danych i odwzorowanie ich na obiekty w C#. W projekcie może być wiele takich kontekstów do jednej lub wielu baz.

T model danych który musi dziedziczyć po interfejsie IModel i musi być klasą, a nie np. interfejsem. Wynika to z zapisu where T: class, IModel. Nasze repozytorium posiada również konstruktor, który przyjmuje referencję do kontekstu. Dzięki czemu dwa repozytoria mogą operować na wspólnym kontekście i tym samym połączeniu do bazy danych. 3. Właściwe modele danych i kontekst bay danych Teraz posiadając podstawy możemy przerobić nasze istniejące już modele danych. W modelu FlatModel, dodano dziedziczenie po IModel, a następnie dodano Id wymagane przez interfejs. Dodatkowo pojawiło się pole kolekcji Residents, oznaczające iż z każdym mieszkaniem będzie można powiązać kilku lokatorów za pomocą klucza obcego. DBContest będzie automatycznie odpytywał bazę danych i wypełniał tą kolekcje rezydentami, którzy będą przypisani do mieszkania.

W modelu ResidentModel dodano dodatkowo pole FlatId, które będzie przechowywać id mieszkania oraz dodano pole FlatModel, do którego DBContekst będzie automatycznie przypisywał referencję do mieszkania na podstawie wartości FlatId. Dodatkowo do pola dodano atrybut ForeignKey, który zmusi DBContext do utworzenia klucza obcego pomiędzy polem FlatId encji ResidentModel, a encją FlatModel. d. Kontekst bazy danych Pozostało nam już tylko utworzyć kontekst bazy danych, czyli klasę dziedziczącą po DBContext. Na jej podstawie Framework, będzie mógł stworzyć skrypt generujący bazę danych z dotychczasowego kodu. Jednocześnie klasa ta stanie się pośrednikiem pomiędzy naszym kodem aplikacji, a bazą danych. W naszym kontekście dodano kolekcje dwóch modeli danych, które następnie utworzą nam dwie encje w bazie danych, będą nimi Flats oraz Residents.

4. Generowanie bazy danych Posiadając kontekst możemy wygenerować już bazę danych. W pierwszej kolejności musimy uaktywnić migrację. Do tego celu należy uruchomić konsolę Nuget-a. I wpisać komendę Enable-Migration Wpisujemy ją zwykle tylko raz, utworzy ona konfigurację migracji i zapisze w katalogu Migrations. Argument -ContextTypeName wskazuje dla którego kontekstu uruchamiamy migrację, gdyż może być ich kilka. Następnie tworzymy skrypt migracyjny komendą Add-Migration. Dodatkowo do komendy dodaje się nazwę skryptu np. start. Tą komendę wywołać należy za każdym razem, gdy dokonamy zmiany w modelach danych, tak aby stworzyć skrypt, który naniesie te zmiany na bazę danych. Nazwy mogą być dowolne, mogą być np. numerem zmian. Wygenerowany skrypt dodaje jedynie zmiany w stosunku do poprzedniego skryptu.

Ostatecznie należy wykonać komendę Update-Database. Komenda nanosi zmiany na bazę danych, należy wywołać ją za każdym razem po komendzie Add- Migration lub jeśli przenieśliśmy projekt na inny system i chcemy wygenerować nową bazę danych od podstaw.

5. Repozytoria rozszerzające generyczne repo. Posiadając repozytorium generyczne możemy już z niego korzystać bez potrzeby tworzenia osobnych repozytoriów, które po nich dziedziczą. Jednakże gdy np. brakuje funkcjonalności możemy je rozszerzyć. Jak widzimy z każdym nowym repozytorium będzie o wiele mniej pisania. 6. Użycie repozytoriów w kontrolerach. Wykorzystywanie repozytoriów w kontrolerach dużo się nie różni w stosunku do poprzedniego laboratorium, jednakże należy pilnować, aby połączenie z serwerem SQL było rozłączane po każdej akcji na kontrolerze. W innym wypadku można zająć całą limitowaną pulę połączeń do serwera SQL, który odmówi Wam współpracy. Można to zrealizować na dwa sposoby, albo umieszczać obiekt repozytorium w klauzuli using lub wywoływać na repo metodę dispose w trakcie kasowania całego kontrolera. Dodatkowo należy pamiętać, aby wywołać commit na bazie danych przed końcem obsługi zdarzenia ponieważ wprowadzone zmiany nie zostaną zapamiętane.

Zadanie Rozszerzyć aplikację z poprzednich zajęć. I dodać obsługę bazy danych. Dla przypomnienia, aplikacja ma służyć do zarządzania biblioteką. Podstawową funkcjonalnością jest wyświetlanie i dodawanie książek do katalogu oraz dodawanie do nich autorów. Dodatkowo aplikacja powinna pozwalać wyszukiwać i usuwać pozycje z katalogu.