2011-06-19 6 views
0

ASP.net MVC 3.0プロジェクトでFluent NhibernateをMSSql 2008で使用しています。"設定で方言を見つけることができませんでした" Fluent Nhibernate


private static ISessionFactory CreateSessionFactory() 
     { 
FluentConfiguration configuration = Fluently.Configure() 
    .Database(MsSqlConfiguration.MsSql2008 
     .ConnectionString("Data Source=Comp;Initial Catalog=MyDB;Integrated Security=true") 
     .ShowSql()).ExposeConfiguration(c => c.SetProperties(AddProperty())) 
    .Mappings(m => m 
     .FluentMappings.AddFromAssemblyOf()); 
     return configuration.BuildSessionFactory(); 
} 

private static IDictionary AddProperty() 
     { 
      IDictionary config = new Dictionary(); 
      config.Add("current_session_context_class", "web"); 
      config.Add(NHibernate.Cfg.Environment.ProxyFactoryFactoryClass, "NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle"); 
      return config; 
     } 

しかし、私はこのエラーは、「構成の方言が見つかりませんでした」

答えて

1

を取得していますあなたはWebSessionContextのためまた、この

FluentConfiguration configuration = Fluently.Configure() 
          .Database(MsSqlConfiguration.MsSql2008 
          .ConnectionString("Data Source=Comp;Initial Catalog=MyDB;Integrated Security=true") 
          .ShowSql().Dialect("NHibernate.Dialect.MsSql2008Dialect")).ExposeConfiguration(c => c.SetProperties(AddProperty())) 
          .Mappings(m => m.FluentMappings.AddFromAssemblyOf()); 

ような何かを試みることができる、あなたはこれを使用することができますコード

FluentConfiguration configuration = Fluently.Configure() 
          .Database(MsSqlConfiguration.MsSql2008 
          .ConnectionString("Data Source=Comp;Initial Catalog=MyDB;Integrated Security=true").CurrentSessionContext<WebSessionContext>() 
          .ShowSql().Dialect("NHibernate.Dialect.MsSql2008Dialect")) 
+1

MsSqlConfiguration.MsSql2008 - これは方言 – ruskin

+0

はい、これは単純に動作し、十分に簡単であるが初期化されます。接続文字列を.ConnectionString(c => c.FromConnectionStringWithKey( "DefaultConnection"))に変更してweb.configファイルから取得することもできます。 – Astaar

2

実際には、設定されているすべてのプロパティを上書きしていますこれまでのすべての設定手順を実行します。代わりに、コレクションに追加してみてください:

private static ISessionFactory CreateSessionFactory() 
{ 
    FluentConfiguration configuration = Fluently.Configure() 
     .Database(MsSqlConfiguration.MsSql2008 
      .ConnectionString("Data Source=Comp;Initial Catalog=MyDB;Integrated Security=true") 
      .ShowSql()) 
     .ExposeConfiguration(AddProperties) 
     .Mappings(m => m 
      .FluentMappings.AddFromAssemblyOf()); 

    return configuration.BuildSessionFactory(); 
} 

private static IDictionary AddProperties(NHibernate.Cfg.Configuration config) 
{ 
    config.SetProperty(NHibernate.Cfg.Environment.CurrentSessionContextClass, "web"); 
    config.SetProperty(NHibernate.Cfg.Environment.ProxyFactoryFactoryClass, "NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle"); 
    return config; 
} 
関連する問題