2010-12-21 19 views
0

イムコードスミスNHibernateのテンプレートを使用してマルチスレッドアプリケーションを開発し、私はセッションまたはすべてのスレッドを使用しなければならないことを読んで、問題は、私はCodeSmith生成されたクラスから新しいセッションを取得する方法を知らないです...CodeSmith NHibernateは

私はCodeSmith Nhibernateを2つの異なるスレッドで使用する方法の非常に簡単な例をどのようなボディにも提供できますか?少なくとも新しいセッションを作成するコードを私のプライベートですか?

ありがとうございます。

答えて

2

CodeSmithによって生成されたマネージャオブジェクトはすでにスレッドセーフであり、各スレッドが独自のNHibernateセッションオブジェクトを取得することを保証します。スレッドが適切に開閉されるようにするには、常にマネージャを処分することが非常に重要です。ここに例があります:

IManagerFactory managerFactory = new ManagerFactory(); 
using (ICategoryManager categoryManager = managerFactory.GetCategoryManager()) 
{ 
    Category categoryA = new Category(); 
    categoryA.Id = "TEST1"; 
    categoryA.Name = "Test 1"; 
    categoryA.Descn = "Hello world!"; 

    categoryManager.Save(categoryA); 
    categoryManager.Session.CommitChanges(); 
}