2009-09-03 7 views
0

私はNHibernateのに新たなんだ...NHibernateの質問 - 流暢NHibernateのために、この例を修正

私はガブリエルシェンカーからこのNHibernateはチュートリアルを次されています: http://nhforge.org/wikis/howtonh/your-first-nhibernate-based-application.aspx

しかし、このチュートリアルでは、HBMファイルを使用しています。私は知っておきたい - hbmの代わりに私のClassMapファイルを使用するように(セッションファクトリを作成する)下のヘプラークラスを変更するために何をする必要がありますか?

また、これは工場の作成に対処する最善の方法ですか?この例では、1回のリクエストにつき1回、工場をどのくらいの頻度で作成しますか? (私はこのケースで_sessionFactoryの存続期間を理解しているかどうかは分かりません)。

ありがとうございました!

public class NHibernateHelper 

{ 

    private static ISessionFactory _sessionFactory; 

    private static ISessionFactory SessionFactory 

    { 

     get 

     { 

      if(_sessionFactory == null) 

      { 

       var configuration = new Configuration(); 

       configuration.Configure(); 

       configuration.AddAssembly(typeof(Product).Assembly); 

       _sessionFactory = configuration.BuildSessionFactory(); 

      } 

      return _sessionFactory; 

     } 

    } 



    public static ISession OpenSession() 

    { 

     return SessionFactory.OpenSession(); 

    } 

} 

答えて

0

セッションの工場は通常、唯一のアプリケーションの寿命について(singletonパターンを使用して)一度作成する必要があります。

そして、ここで流暢NHibernateはとのSessionFactoryを作成するためのサンプルコードです:

var config = new NHibernate.Cfg.Configuration().Configure(); 
var model = new PersistenceModel(); 
model.Configure(config); 
model.AddMappingsFromAssembly(typeof(Product).Assembly); 

var sessionFactory = config.BuildSessionFactory(); 
+0

ありがとう:

var mssqlConfig = MsSqlConfiguration .MsSql2008 .ConnectionString(c => c.Is(connectionstring)) .UseOuterJoin() .ProxyFactoryFactory("NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle"); var sessionFactory = Fluently.Configure() .Database(mssqlConfig) .Mappings(m => m.FluentMappings.AddFromAssembly(typeof(Product).Assembly)) .BuildSessionFactory(); 

流暢コンフィグを(私の頭の上から、構文は正確ではないかもしれません)を使用していません - 設定をhibernate.cfg.xmlに保存したいが、マッピングのためにFluentを使うだけなら、あなたのコードでどのようにすればよいだろうか? – UpTheCreek

+0

答えが更新された、構文が正確ではないかもしれない、私の前に私のIDEを持っていない – mxmissile