2012-06-14 134 views
1

我想用SQL Server 2008 R2實現Fluent Nhibernate應用程序。對SQL Server 2008 R2的FluentNhibernate支持

我很困惑,Fluent Nhibernate 1.2是否支持SQL Server 2008 R2。

如果支持什麼配置。它看起來像下面嗎?

var config = Fluently.Configure() 
       .Database(
        MsSqlConfiguration 
        .MsSql2008R2 
        .ConnectionString(@"Data Source=.\SQLEXPRESS;AttachDbFilename='FNHLD.mdf';Integrated Security=True;User Instance=True")) 
        .Mappings(m => m.FluentMappings.AddFromAssemblyOf<NHibernateRepository<T>>()) 
       .BuildConfiguration(); 

回答

2

事實上,即使MsSql2005方言也適用於SQL Server 2008 R2。

也就是說,如果您使用SQL Server 2008數據庫MSSQL2005方言,NHibernate的只是將無法使用有關的日期/時間一些額外的類型是新到SQL Server 2008

只是爲了好玩在這裏,是鏈接的2000-2012 SQL Server的方言的源代碼:

MsSql2000
MsSql2005
MsSql2008
MsSql2012

你可以看到那裏的模式。 MsSql2000是一種主要的方言。 MsSql2005從MsSql2005繼承,並有幾個重寫。 MsSql2008繼承自MsSql2005,也沒有覆蓋。 MsSql2012從MsSql2008繼承。

SQL Server R2有點像服務包。數據庫引擎本身並沒有太多變化,所以不需要單獨的方言。使用2005年或2008年的方言,你會沒事的。

+0

謝謝米羅斯拉夫 – viento

2

其實我使用這個配置連接到SQL Server 2008 R2的SP1數據庫沒有問題:

  var nhConfig = Fluently.Configure() 
      .Database(MsSqlConfiguration.MsSql2008 
          .ConnectionString(connstr => connstr.FromConnectionStringWithKey("DBConnectionString")) 
          .ShowSql())//<-I use this for debug 
      .Cache(c => c 
          .UseQueryCache() 
          .UseMinimalPuts() 
          .ProviderClass<HashtableCacheProvider>())//<--Cache Level Two 
      .Mappings(m => m.FluentMappings 
           .AddFromAssemblyOf<Avaruz.Artemisa.Domain.Apm>()) 
      .CurrentSessionContext<WebSessionContext>() 
      .BuildConfiguration(); 
0

我也用MsSqlConfiguration.MsSql2008。閱讀2008R2的發行說明,我無法看到任何需要不同方言的功能。