niedziela, 24 kwietnia 2016

EntityFramework epizod 1

Na początku najważniejsze info które znalazłem na necie:D

EntityFramework ADO.NET to narzędzie typu Object Relational Mapping i służy do odwzorowania relacyjnej bazy danych za pomocą obiektów. Jest to potrzebne ponieważ sposób przechowywania informacji w bazie danych jest inny niż w podejściu obiektowym.


Rysunek ze strony

Tak jak widać na rysunku Entity Framework pozwala na oddzielenie warstwy prezentacji od danych.

EntityFramework udostępnia 3 sposoby na stworzenie modelu danych:

-Database First używamy gdy mamy już gotową bazę danych i chcemy ja wykorzystać.

-Model First ten sposób uwalnia nas od pisania kodu SQL. Modele tworzymy w Entity data model designer i następnie na podstawie tego modelu tworzona jest baza danych

-Code First najpierw piszemy kod i na podstawie kodu jest tworzony model i struktura bazy danych.

Dla dociekliwych kilka artykułów związanych z EF które znalazłem i prawdopodobnie opisze je w kolejnych epizodach :D

-Pierwszy artykuł - jak EF zarządzą zależnościami pomiędzy tabelami

-Drugi artykuł - tworzenie nowej bazy danych podejscie MODEL FIRST na tej stronie mozna tez znaleźć Code First i Database First

-Trzeci artykuł - Wprowadzenie do Entity Framework

środa, 20 kwietnia 2016

Podsumowanie

W dzisiejszym poście chciałbym opisać krótko swoje postępy i co zamierzam robić w dalej. Na początku była teoria o MVVM.
Po przerobieniu teorii przyszedł czas na praktykę.

Zacząłem od stworzenia oddzielnych folderów na View ,

ViewModel , Model(nigdzie nie było o tym napisane ale pomyślałem że nie zaszkodzi tak zrobić :D).

Następnie stworzyłem View dla każdego okienka które chcę wyświetlić.

Następnie powstał ViewModel i Model.

Model dziedziczył po klasie z zaimplementowanym interfejsem INotifyPropertyChanged.

Kolejny krok to sprawdzenie czy działa :D.Sprawdzałem każdy View oddzielnie.

Wyglądało to tak że tworzyłem obiekt dla głównego okna i jako dataContext ustawiałem nowy obiekt ViewModel.

Wszystko zadziałało jak trzeba.

Następnie zacząłem tworzyć zmienne ICommand żeby obsłużyć kliknięcia przycisków.

I póki co jeszcze nie skończyłem :D. Po skończeniu z ICommand ,
następnym elementem apki będzie EntityFramework.

W tej chwili wydaję mi się, że po zaimplementowaniu EntityFramework pod względem funkcjonalności Apka będzie już skończona.

Pozostanie tylko dopracowanie wyglądu.

Podczas szukania info o MVVM natknąłem się na artykuł EntityFramework-Aplikacja Trójwarstwowa.

W odróżnieniu od mojego projektu wersja z artykułu posiada warstwę pomiędzy warstwą prezentacji(WPF),

a warstwą dostępu do danych(EntityFramework) i jest to WCF.

I pomyślałem że mógłbym zrobić to u siebie.

W pierwszym założeniu aplikacja miała być odpalana na komputerze mechanika i tylko on mógłby z niej korzystać.

Baza danych była by na tym komputerze na którym apka.

Jeżeli starczy czasu to spróbuje zrobić to tak jak w artykule.

Wtedy Baza danych będzie na serwerze a dzięki usługom sieciowym WCF apka będzie mogła działać na każdym sprzęcie podłączonym do internetu.

Co zostało do Zrobienia (W Skrócie):
-EntityFramework(Czyli dostep do danych jeżeli dobrze zrozumiałem baza danych zostanie wygenerowana automatycznie)

-Zrobienie ładnego UI(w tej chwili jest koszmarny ale to sie zmieni)

-Nadrobienie Postów (miały być 2 tygodniowo :D)

niedziela, 10 kwietnia 2016

MVVM INotifyPropertyChanged

W tym poście chciałbym tylko pokazać jak wygląda najprostsza implementacja interfejsu INotifyPropertyChanged.
Poniżej jest kawałek mojego kodu który zawiera minimum tego co wystarczy żeby View był powiadamiany o zmianach danych które wystąpiły w Model albo ViewModel.
Interfejs INotifyPropertyChanged należy zaimplementować w klasie Model i ViewModel. Jak już pisałem we wcześniejszych postach zostaje wykorzystywany do informowania View o zmianie wartości naszych danych
public class Notify : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged([CallerMemberName] string propertyName = "")
{
if(PropertyChanged != null) {
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
A tutaj wystarczy do Zmiennej dopisac jedna linijke kodu OnPropertyChanged("Nazwa Zmiennej").
Teraz gdy zmieni się wartość zmiennej View zostaje powiadomione o zmianie.
public class WarsztatViewModel : Notify
{
private int warsztatId;
public int WarsztatId
{
get{return warsztatId};
set
{
if(value! = warsztatId)
{
warsztatId = value;
OnPropertyChanged("WarsztatId");
}
}