Nhibernate-getting-started

提供:Dev Guides
移動先:案内検索

NHibernate-はじめに

この章では、NHibernateを使用して簡単な例を開始する方法を見ていきます。 *シンプルなコンソールアプリケーション*を構築します。 コンソールアプリケーションを作成するには、作成に必要なすべての機能を含むVisual Studio 2015を使用し、NHibernateパッケージを使用してアプリケーションをテストします。

以下は、Visual Studioで利用可能なプロジェクトテンプレートを使用してプロジェクトを作成する手順です。

  • ステップ1 *-Visual Studioを開き、[ファイル]→[新規]→[プロジェクト]メニューオプションをクリックします。
  • ステップ2 *-新しいプロジェクトダイアログが開きます。

プロジェクトダイアログ

  • ステップ3 *-左ペインから、テンプレート→Visual C#→Windowsを選択します。
  • ステップ4 *-中央のペインで、[コンソールアプリケーション]を選択します。
  • ステップ5 *-[Name]フィールドにプロジェクト名「NHibernateDemoApp」を入力し、[OK]をクリックして続行します。
  • ステップ6 *-Visual Studioでプロジェクトを作成すると、ソリューションエクスプローラーウィンドウに多数のファイルが表示されます。

プロジェクトダイアログ

簡単なコンソールアプリケーションプロジェクトを作成したことをご存知のとおり、NHibernateパッケージをコンソールプロジェクトに含める必要があります。

[ツール]メニューに移動し、[NuGetパッケージマネージャー]→[パッケージマネージャーコンソール]を選択すると、[パッケージマネージャーコンソール]ウィンドウが開きます。

マネージャーコンソールウィンドウ

上記の Package Manager Console ウィンドウに表示されるコマンドを指定してEnterキーを押すと、NHibernateのすべての依存関係がダウンロードされ、必要なすべてのアセンブリへの参照が作成されます。 インストールが完了すると、次の図に示すようなメッセージが表示されます。

NHibernate Demo App

NHibernateが追加されたので、実装を開始できます。 したがって、まず、 Student という非常に単純な table をマッピングすることから始めます。この表には、IDという名前の整数主キーとFirstNameおよびLastName列があります。

新しいアイテムを追加

この生徒を表すクラスが必要です。そのため、ソリューションエクスプローラーでプロジェクトを右クリックし、[追加]→[クラス]を選択して[新しいアイテムの追加]ダイアログボックスを開いて、Studentという新しいクラスを作成します。

新しいアイテムNHibernateを追加

名前フィールドに Student.cs と入力し、[追加]ボタンをクリックします。 このStudentクラスでは、IDという整数のプライマリキーが必要です。また、次のStudentクラスの完全な実装に示すように、この文字列、 FirstName および LastName フィールドを作成する必要があります。

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構成オブジェクトを作成しましょう。

最初に提供する必要があるのは、接続文字列*です。 これはデータベース固有の接続文字列であり、接続文字列を見つける最も簡単な方法は、 SQL Serverオブジェクトエクスプローラー*でデータベースを右クリックし、[プロパティ]を選択することです。

SQL Serverオブジェクトエクスプローラー

[プロパティ]ウィンドウが開き、下にスクロールすると、[プロパティ]ウィンドウに[接続文字列]フィールドが表示されます。

プロパティウィンドウ

接続文字列をコピーして、コードで指定します。 以下は、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 SQL 2008を使用します。

NHibernateは、データベースへの接続方法を認識できるようになりました。 他に必要なことは、マップするモデルのリストを提供することです。

これを行うには、アセンブリを追加します。 Assembly.GetExecutingAssembly を指定すると、プログラムがマッピングファイルを検索します。 マッピングファイルは、C#クラスからデータベーステーブルに移動する方法をNHibernateに指示します。

SessionFactoryは、NHibernateの初期化に必要なすべてのメタデータをコンパイルします。 SessionFactoryを使用して、データベース接続にほぼ類似したセッションを構築できます。 したがって、適切な方法は、usingブロックで使用することです。 var sessionsessionFactory.OpenSession に等しいと言えます。これをトランザクション内で実行したいと思います。

セッションが開いたら、セッションに新しいトランザクションを開始するように指示し、ここでいくつかのロジックを実行できます。 したがって、いくつかのデータベースロジックを実行し、最後にそのトランザクションをコミットします。