NHibernate - Pierwsze kroki
W tym rozdziale przyjrzymy się, jak rozpocząć prosty przykład z użyciem NHibernate. Będziemy budowaćsimple console application. Do stworzenia aplikacji konsolowej wykorzystamy Visual Studio 2015, który zawiera wszystkie funkcje potrzebne do stworzenia, przetestowania aplikacji przy użyciu pakietu NHibernate.
Poniżej przedstawiono kroki tworzenia projektu przy użyciu szablonów projektów dostępnych w programie Visual Studio.
Step 1 - Otwórz Visual studio i kliknij opcję menu Plik → Nowy → Projekt.
Step 2 - Otworzy się nowe okno dialogowe Projekt.
Step 3 - W lewym okienku wybierz Szablony → Visual C # → Windows.
Step 4 - W środkowym okienku wybierz opcję Aplikacja konsoli.
Step 5 - Wprowadź nazwę projektu „NHibernateDemoApp” w polu Nazwa i kliknij przycisk OK, aby kontynuować.
Step 6 - Po utworzeniu projektu przez program Visual Studio w oknie Eksploratora rozwiązań zostanie wyświetlona liczba plików.
Jak wiecie, stworzyliśmy prosty projekt aplikacji konsolowej, teraz musimy dołączyć pakiet NHibernate do naszego projektu konsoli.
Przejdź do menu Narzędzia i wybierz Menedżer pakietów NuGet → Konsola Menedżera pakietów, otworzy się okno konsoli Menedżera pakietów.
Określ polecenie pokazane powyżej Package Manager Consolei naciśnij Enter, pobierze wszystkie zależności NHibernate i utworzy odniesienia do wszystkich wymaganych zestawów. Po zakończeniu instalacji zostanie wyświetlony komunikat przedstawiony na poniższej ilustracji.
Teraz, gdy dodaliśmy NHibernate, możemy rozpocząć wdrażanie. Więc zaczniemy od mapowania bardzo prostegotable nazywa Student, który ma po prostu całkowity klucz podstawowy o nazwie ID oraz kolumny FirstName i LastName.
Potrzebujemy klasy do reprezentowania tego ucznia, więc stwórzmy nową klasę o nazwie Student, klikając prawym przyciskiem myszy projekt w eksploratorze rozwiązań, a następnie wybierając opcję Dodaj → Klasa, co otworzy okno dialogowe Dodaj nowy element.
Wchodzić Student.csw polu nazwy kliknij przycisk Dodaj. W tej klasie Student musimy mieć nasz całkowity klucz podstawowy o nazwie ID i musimy utworzyć ten ciąg,FirstName i LastName pola, jak pokazano w poniższej pełnej realizacji klasy Student.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NHibernateDemoApp {
class Student {
public virtual int ID { get; set; }
public virtual string LastName { get; set; }
public virtual string FirstMidName { get; set; }
}
}
Mając do czynienia z modelami w aplikacji NHibernate, najłatwiej jest uczynić wszystkie pola wirtualnymi. To jest nasz prosty model NHibernate, którego użyjemy i zmapujemy go do wewnętrznej bazy danych.
Przejdźmy teraz do metody Main w klasie Program i utwórzmy nowy obiekt konfiguracyjny NHibernate.
Pierwszą rzeczą, którą musimy zapewnić, jest plik connection string. Są to parametry połączenia specyficzne dla bazy danych, a najłatwiejszym sposobem znalezienia parametrów połączenia jest kliknięcie prawym przyciskiem myszy bazy danych wSQL Server Object Explorer i wybierz Właściwości.
Otworzy się okno Właściwości, teraz przewiń w dół, a zobaczysz pole Parametry połączenia w oknie Właściwości.
Skopiuj parametry połączenia i określ w kodzie. Poniżej znajduje się implementacja metody Main, w której potrzebujemy konfiguracji dla NHibernate.
using NHibernate.Cfg;
using NHibernate.Dialect;
using NHibernate.Driver;
using System;
using System.Linq;
using System.Reflection;
namespace NHibernateDemoApp {
class Program {
static void Main(string[] args) {
var cfg = new Configuration();
String Data Source = asia13797\\sqlexpress;
String Initial Catalog = NHibernateDemoDB;
String Integrated Security = True;
String Connect Timeout = 15;
String Encrypt = False;
String TrustServerCertificate = False;
String ApplicationIntent = ReadWrite;
String MultiSubnetFailover = False;
cfg.DataBaseIntegration(x = > { x.ConnectionString = "Data Source +
Initial Catalog + Integrated Security + Connect Timeout + Encrypt +
TrustServerCertificate + ApplicationIntent + MultiSubnetFailover";
x.Driver<SqlClientDriver>();
x.Dialect<MsSql2008Dialect>();
});
cfg.AddAssembly(Assembly.GetExecutingAssembly());
var sefact = cfg.BuildSessionFactory();
using (var session = sefact.OpenSession()) {
using (var tx = session.BeginTransaction()) {
//perform database logic
tx.Commit();
}
Console.ReadLine();
}
}
}
}
Po parametrach połączenia musimy podać sterownik, którym jest SQLClientDriver a następnie musimy również zapewnić mu dialekt, która wersja SQL Servera i będziemy używać MS SQL 2008.
NHibernate wie teraz, jak połączyć się z bazą danych. Inną rzeczą, którą musimy zrobić, jest dostarczenie mu listy modeli, które będziemy mapować.
Możemy to zrobić, dodając zestaw, więc określając plik Assembly.GetExecutingAssemblyi tutaj program znajdzie pliki mapujące. Pliki mapowania mówią NHibernate, jak przejść z klas C # do tabel bazy danych.
SessionFactory kompiluje wszystkie metadane niezbędne do zainicjowania NHibernate. SessionFactory może służyć do budowania sesji, które są mniej więcej analogiczne do połączeń z bazą danych. Więc właściwym sposobem jest użycie go w bloku using. mogę powiedziećvar session równa się sessionFactory.OpenSession i chcę to zrobić w ramach transakcji.
Po otwarciu sesji możemy nakazać sesji rozpoczęcie nowej transakcji, a następnie możemy wykonać tutaj logikę. Wykonaj więc logikę bazy danych i ostatecznie zatwierdź tę transakcję.