2012-06-14 67 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的发行说明,我无法看到任何需要不同方言的功能。