NHibernate-はじめに
この章では、NHibernateを使用して簡単な例を開始する方法を見ていきます。私たちは構築しますsimple console application。コンソールアプリケーションを作成するには、作成する必要のあるすべての機能を含むVisual Studio 2015を使用し、NHibernateパッケージを使用してアプリケーションをテストします。
以下は、VisualStudioで使用可能なプロジェクトテンプレートを使用してプロジェクトを作成する手順です。
Step 1 − Visual Studioを開き、[ファイル]→[新規]→[プロジェクト]メニューオプションをクリックします。
Step 2 −新しいプロジェクトダイアログが開きます。
Step 3 −左側のペインから、[テンプレート]→[Visual C#]→[Windows]を選択します。
Step 4 −中央のペインで、[コンソールアプリケーション]を選択します。
Step 5 −「名前」フィールドにプロジェクト名「NHibernateDemoApp」を入力し、「OK」をクリックして続行します。
Step 6 −プロジェクトがVisual Studioによって作成されると、ソリューションエクスプローラーウィンドウにいくつかのファイルが表示されます。
簡単なコンソールアプリケーションプロジェクトを作成したことをご存知のとおり、コンソールプロジェクトにNHibernateパッケージを含める必要があります。
[ツール]メニューに移動し、[NuGetパッケージマネージャー]→[パッケージマネージャーコンソール]を選択すると、[パッケージマネージャーコンソール]ウィンドウが開きます。
上記のコマンドを指定してください Package Manager ConsoleウィンドウでEnterキーを押すと、すべてのNHibernate依存関係がダウンロードされ、必要なすべてのアセンブリへの参照が作成されます。インストールが完了すると、次の図に示すようなメッセージが表示されます。
NHibernateが追加されたので、実装を開始できます。したがって、非常に単純なマッピングから始めます。table と呼ばれる Student、IDと呼ばれる整数の主キーと、FirstName列とLastName列があります。
この学生を表すクラスが必要なので、ソリューションエクスプローラーでプロジェクトを右クリックし、[追加]→[クラス]を選択して[新しいアイテムの追加]ダイアログボックスを開き、Studentという新しいクラスを作成しましょう。
入る Student.cs名前フィールドで、[追加]ボタンをクリックします。このStudentクラスでは、IDと呼ばれる整数の主キーが必要であり、この文字列を作成する必要があります。FirstName そして LastName 次の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; }
}
}
NHibernateアプリケーションでモデルを扱う場合、すべてのフィールドを仮想化するのが最も簡単です。つまり、これは私たちが使用する単純なNHibernateモデルであり、これをバックエンドデータベースにマップします。
次に、ProgramクラスのMainメソッドに移動して、新しいNHibernate構成オブジェクトを作成しましょう。
私たちが最初に提供する必要があるのは connection string。これはデータベース固有の接続文字列であり、接続文字列を見つける最も簡単な方法は、データベースを右クリックすることです。SQL Server Object Explorer [プロパティ]を選択します。
[プロパティ]ウィンドウが開き、下にスクロールすると、[プロパティ]ウィンドウに[接続文字列]フィールドが表示されます。
接続文字列をコピーして、コードで指定します。以下は、NHibernateの構成が必要なMainメソッドの実装です。
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();
}
}
}
}
接続文字列の後に、ドライバーを提供する必要があります。 SQLClientDriver 次に、SQL Serverのバージョンである方言を提供する必要があり、MS SQL2008を使用します。
NHibernateは、データベースに接続する方法を知っています。もう1つ行う必要があるのは、マップするモデルのリストを提供することです。
これは、アセンブリを追加することで実行できるため、 Assembly.GetExecutingAssemblyこれは、プログラムがマッピングファイルを見つける場所です。マッピングファイルは、NHibernateにC#クラスからデータベーステーブルに移動する方法を指示します。
SessionFactoryは、NHibernateの初期化に必要なすべてのメタデータをコンパイルします。SessionFactoryを使用して、データベース接続にほぼ類似したセッションを構築できます。したがって、適切な方法は、usingブロックで使用することです。私は言うことができますvar session 等しい sessionFactory.OpenSession トランザクション内でこれを実行したいと思います。
セッションが開かれると、新しいトランザクションを開始するようにセッションに指示でき、ここでいくつかのロジックを実行できます。したがって、データベースロジックを実行し、最後にそのトランザクションをコミットします。