【问题标题】:Does Nhibernate support Sybase?Nhibernate 是否支持 Sybase?
【发布时间】:2011-03-01 04:18:42
【问题描述】:

我即将开始使用带有 Sybase 数据存储的新 WPF 应用程序。该团队有使用 Nhibernate 的经验,但我们不确定它对 Sybase 的支持程度以及是否存在一些我们应该注意的重大缺陷。

如果是,Fluent nhibernate 怎么样?

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

谢谢。

【问题讨论】:

    标签: wpf nhibernate sybase


    【解决方案1】:

    NHibernate 正式支持 Sybase。

    据我所知,Fluent NH 没有公开用于配置 Sybase DB 的类,但您可能只需几行即可完成(其余部分不依赖于 DB)

    【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我在询问 Sybase ASE。您是否将 Nhibernate 与 Sybase ASE 一起使用?
    • 我们目前正在使用 NHibernate 和 Sybase ASE。驱动程序针对的是版本 11,因此如果您使用 12 或 15 的任何功能,则需要稍微调整驱动程序。
    【解决方案3】:

    我想更正这里的陈述,尽管这是一篇较旧的帖子。 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 驱动程序自己制作。

    【讨论】:

      【解决方案4】:

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

      SQLAnywhere12Dialect 似乎已经修复了一些有问题的东西。

      【讨论】:

        【解决方案5】:

        跟进约瑟夫的回答:

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

        这个问题是reported in their Jira.

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

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

        【讨论】:

          【解决方案6】:

          我使用 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();
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-01-25
            • 1970-01-01
            • 2011-04-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多