【发布时间】:2011-03-01 04:18:42
【问题描述】:
我即将开始使用带有 Sybase 数据存储的新 WPF 应用程序。该团队有使用 Nhibernate 的经验,但我们不确定它对 Sybase 的支持程度以及是否存在一些我们应该注意的重大缺陷。
如果是,Fluent nhibernate 怎么样?
如果没有,您知道我们可以在这种情况下用于 Sybase 的任何其他 ORM 产品吗?
谢谢。
【问题讨论】:
标签: wpf nhibernate sybase
我即将开始使用带有 Sybase 数据存储的新 WPF 应用程序。该团队有使用 Nhibernate 的经验,但我们不确定它对 Sybase 的支持程度以及是否存在一些我们应该注意的重大缺陷。
如果是,Fluent nhibernate 怎么样?
如果没有,您知道我们可以在这种情况下用于 Sybase 的任何其他 ORM 产品吗?
谢谢。
【问题讨论】:
标签: wpf nhibernate sybase
NHibernate 正式支持 Sybase。
据我所知,Fluent NH 没有公开用于配置 Sybase DB 的类,但您可能只需几行即可完成(其余部分不依赖于 DB)
您询问的是 Sybase ASE 还是 Sybase Anywhere。 NHibernate 两者都支持,FluentNHibernate 都不支持。
【讨论】:
我想更正这里的陈述,尽管这是一篇较旧的帖子。 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 驱动程序自己制作。
【讨论】:
根据this link,我会说确实如此。不过,似乎有已知问题。但根据您的需要,它可能适合您的需求。
SQLAnywhere12Dialect 似乎已经修复了一些有问题的东西。
【讨论】:
跟进约瑟夫的回答:
大约两周前(大约 2011 年 10 月 5 日)我下载了 NHibernate 3.2.0.GA 的二进制文件,它似乎没有开箱即用的 ASE 15 支持(没有方言或驱动程序,最接近的一个)可能是 SQL Anywhere)。
今天(2011 年 10 月 20 日)我下载了该项目的源代码以尝试添加自己的源代码,我发现现在有一些类提供这种支持,即 SybaseASE15Dialect.cs 和 SybaseASEDriver。
我不确定二进制文件现在是否支持此功能,但如果没有,您可以下载源文件、构建 NHibernate 项目并使用 dll,或者等到他们使用此功能发布新版本。
【讨论】:
我使用 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();
【讨论】: