Nhibernate是否支持Sybase?

时间:2010-06-08 13:42:03

标签: wpf nhibernate sybase

我即将开始使用Sybase数据存储区的新WPF应用程序。该团队拥有Nhibernate的经验,但我们并不确定它对Sybase的支持程度如何,如果有一些重大缺陷我们应该注意。

如果是,那么Fluent nhibernate怎么样?

如果没有,您知道在这种情况下我们可以用于Sybase的任何其他ORM产品吗?

感谢。

6 个答案:

答案 0 :(得分:2)

NHibernate正式支持Sybase。

从我所看到的情况来看,Fluent NH没有公开用于配置Sybase DB的类,但是您可以在几行中完成此操作(其余部分不依赖于DB)

答案 1 :(得分:2)

您是在询问Sybase ASE还是Sybase Anywhere。 NHibernate支持两者,而FluentNHibernate都不支持。

答案 2 :(得分:2)

我想更正此处所做的陈述,即使这是一篇较旧的帖子。 NHibernate 不完全支持Sybase。

作为我为什么说这句话的参考,请看这里: http://community.jboss.org/wiki/DatabasessupportedbynHibernate

该帖子是从2009年开始的。自那以后,NHibernate发布了版本3.0,它确实为Sybase提供了方言: http://nhforge.org/blogs/nhibernate/archive/2010/12/05/nhibernate-3-0-released.aspx

但问题在于它只适用于Sybase Anywhere,所以如果你有ASE,你将不得不参考Glenn Paulley的NHibernate独立版本,我不相信他实际上是与NHibernate有关。

所有这一切,我已经尝试了过去几个小时来获取使用Sybase ASE 15的内容并且我没有成功。看起来我只是使用提供的.NET驱动程序来创建它。

答案 3 :(得分:1)

根据this link,我会说它确实如此。但是,似乎已经存在已知问题。但根据您的需要,它可能适合您的需求。

SQLAnywhere12Dialect似乎修复了一些错误的东西。

答案 4 :(得分:1)

跟进约瑟夫的回答:

我大约两周前(大约10/5/2011)下载了NHibernate 3.2.0.GA的二进制文件,它似乎没有提供开箱即用的ASE 15支持(没有方言或驱动程序,最接近的一个)也许是SQL Anywhere)。

此问题为reported in their Jira.

今天(10/20/2011)我下载了项目的源代码,试图添加我自己的源代码,我发现现在有一些类提供了这种支持,SybaseASE15Dialect.cs和SybaseASEDriver。

我不确定二进制文件现在是否有这种支持,但如果没有,你可以只下载源文件,构建NHibernate项目并使用dll,或者只是等到他们用这个发布新版本。

答案 5 :(得分:1)

我已经使用NHibernate完成了一个类似的项目,并使用ODBC连接到Sybase SQL Anywhere,它与“ GenericDialect”一起使用时效果很好。 这是一些用于构建会话工厂的示例代码。

var mapper = new ModelMapper();
mapper.AddMappings(Assembly.GetExecutingAssembly().GetExportedTypes());
HbmMapping mapping = mapper.CompileMappingForAllExplicitlyAddedEntities();

NHibernate.Cfg.Configuration cfg = new NHibernate.Cfg.Configuration()
                    .DataBaseIntegration(db =>
                    {
                        db.ConnectionString = connectionStr;
                        db.Dialect<NHibernate.Dialect.GenericDialect>();
                        db.Driver<NHibernate.Driver.OdbcDriver>();
                    });
    
cfg.AddMapping(mapping);
cfg.BuildSessionFactory();