NHibernate - Erste Schritte
In diesem Kapitel wird erläutert, wie Sie ein einfaches Beispiel mit NHibernate starten. Wir werden eine bauensimple console application. Um eine Konsolenanwendung zu erstellen, verwenden wir Visual Studio 2015, das alle Funktionen enthält, die Sie zum Erstellen benötigen. Testen Sie Ihre Anwendung mit dem NHibernate-Paket.
Im Folgenden finden Sie die Schritte zum Erstellen eines Projekts mit den in Visual Studio verfügbaren Projektvorlagen.
Step 1 - Öffnen Sie das Visual Studio und klicken Sie auf die Menüoption Datei → Neu → Projekt.
Step 2 - Ein neuer Projektdialog wird geöffnet.
Step 3 - Wählen Sie im linken Bereich Vorlagen → Visual C # → Windows.
Step 4 - Wählen Sie im mittleren Bereich Konsolenanwendung aus.
Step 5 - Geben Sie den Projektnamen 'NHibernateDemoApp' in das Feld Name ein und klicken Sie auf OK, um fortzufahren.
Step 6 - Sobald das Projekt von Visual Studio erstellt wurde, werden im Projektmappen-Explorer eine Reihe von Dateien angezeigt.
Da Sie wissen, dass wir ein einfaches Konsolenanwendungsprojekt erstellt haben, müssen wir jetzt das NHibernate-Paket in unser Konsolenprojekt aufnehmen.
Gehen Sie zum Menü Extras und wählen Sie NuGet Package Manager → Package Manager Console. Das Fenster Package Manager Console wird geöffnet.
Geben Sie den oben gezeigten Befehl an Package Manager ConsoleWenn Sie das Fenster drücken und die Eingabetaste drücken, werden alle NHibernate-Abhängigkeiten heruntergeladen und Verweise auf alle erforderlichen Assemblys erstellt. Nach Abschluss der Installation wird die folgende Meldung angezeigt.
Nachdem wir NHibernate hinzugefügt haben, können wir jetzt mit der Implementierung beginnen. Wir beginnen also mit einer sehr einfachen Abbildungtable namens Student, der einfach einen ganzzahligen Primärschlüssel namens ID und eine Spalte Vorname und Nachname enthält.
Wir benötigen eine Klasse, um diesen Schüler darzustellen. Erstellen Sie also eine neue Klasse mit dem Namen Schüler, indem Sie mit der rechten Maustaste auf das Projekt im Lösungs-Explorer klicken und dann Hinzufügen → Klasse auswählen. Daraufhin wird das Dialogfeld Neues Element hinzufügen geöffnet.
Eingeben Student.csKlicken Sie im Feld Name auf die Schaltfläche Hinzufügen. In dieser Schülerklasse benötigen wir unseren ganzzahligen Primärschlüssel ID und diese Zeichenfolge.FirstName und LastName Felder wie in der folgenden vollständigen Implementierung der Schülerklasse gezeigt.
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; }
}
}
Wenn Sie mit Modellen in NHibernate-Anwendungen arbeiten, ist es am einfachsten, alle Ihre Felder virtuell zu gestalten. Dies ist also unser einfaches NHibernate-Modell, das wir verwenden und der Back-End-Datenbank zuordnen werden.
Gehen wir nun zur Main-Methode in der Program-Klasse und erstellen ein neues NHibernate-Konfigurationsobjekt.
Das erste, was wir bereitstellen müssen, ist das connection string. Dies ist eine datenbankspezifische Verbindungszeichenfolge. Der einfachste Weg, die Verbindungszeichenfolge zu finden, besteht darin, mit der rechten Maustaste auf die Datenbank in zu klickenSQL Server Object Explorer und wählen Sie Eigenschaften.
Es öffnet sich das Eigenschaftenfenster, scrollen Sie jetzt nach unten und Sie sehen das Feld Verbindungszeichenfolge im Eigenschaftenfenster.
Kopieren Sie die Verbindungszeichenfolge und geben Sie sie in Ihrem Code an. Es folgt die Implementierung der Main-Methode, bei der die Konfiguration für NHibernate erforderlich ist.
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();
}
}
}
}
Nach der Verbindungszeichenfolge müssen wir einen Treiber angeben, nämlich den SQLClientDriver und dann müssen wir ihm auch einen Dialekt geben, welche Version von SQL Server, und wir werden MS SQL 2008 verwenden.
NHibernate weiß jetzt, wie eine Verbindung zur Datenbank hergestellt wird. Das andere, was wir tun müssen, ist, ihm eine Liste der Modelle zur Verfügung zu stellen, die wir abbilden werden.
Wir können dies tun, indem wir eine Assembly hinzufügen, also indem wir die angeben Assembly.GetExecutingAssemblyund hier findet das Programm Mapping-Dateien. Zuordnungsdateien teilen NHibernate mit, wie von C # -Klassen in Datenbanktabellen übergegangen werden soll.
SessionFactory kompiliert alle Metadaten, die zum Initialisieren von NHibernate erforderlich sind. Mit SessionFactory können Sitzungen erstellt werden, die in etwa den Datenbankverbindungen entsprechen. Der geeignete Weg ist also, es im using-Block zu verwenden. ich kann sagenvar session gleich sessionFactory.OpenSession und ich werde dies innerhalb seiner Transaktion tun wollen.
Sobald die Sitzung geöffnet ist, können wir die Sitzung anweisen, eine neue Transaktion zu beginnen, und dann hier eine Logik ausführen. Führen Sie also eine Datenbanklogik durch und schreiben Sie diese Transaktion schließlich fest.