我即将开始使用Sybase数据存储区的新WPF应用程序。该团队拥有Nhibernate的经验,但我们并不确定它对Sybase的支持程度如何,如果有一些重大缺陷我们应该注意。
如果是,那么Fluent nhibernate怎么样?
如果没有,您知道在这种情况下我们可以用于Sybase的任何其他ORM产品吗?
感谢。
答案 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)。
今天(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();