0

我正在尝试使用 Fluent NHibernate(或在必要时直接使用 NHibernate)连接到 Sybase IQ 数据库,但我似乎找不到任何有关要使用的驱动程序、方言和连接字符串的示例或其他输入。

任何帮助,将不胜感激。

谢谢

4

1 回答 1

1

目前没有适用于 Sybase IQ 的 NH 驱动程序或方言,但您自己编写很容易。

对于方言,您可以尝试使用通用方言,如果这不合适,那么您将不得不调整现有方言之一。有关当前方言的来源,请查看以下链接:

https://github.com/nhibernate/nhibernate-core/tree/master/src/NHibernate/Dialect

对于驱动程序,最简单的选择是继承自ReflectionBasedDriver. 请参阅下面的示例类,了解如何执行此操作:

public class IQClientDriver : NHibernate.Driver.ReflectionBasedDriver
{
    public IQClientDriver()
        : base("Full namespace + DB Provider name here", 
               "Full namespace + DB Connection class here", 
               "Full namespace + DB Command class here")
    { }

    public override bool UseNamedPrefixInSql
    { get { /* return true when the parameter names in SQL statements require a prefix */ } }

    public override bool UseNamedPrefixInParameter
    { get { /* return true when the parameters names require a prefix */ } }

    public override string NamedPrefix
    { get { /* return the parameters prefix string */  } }
}

为了能够配置 Fluent Hibernate 以使用这个新的驱动程序和方言,有必要通过继承来创建一个配置类PersistenceConfiguration。有关详细信息,请参阅以下 SO 问题。

是否可以通过 odbc 连接使用(流利的)nhibernate?

或者,在 NHibernate XML 配置文件中指定驱动程序和方言,将以下条目更新为新的方言和驱动程序:

<property name="dialect">Your.NS.IQDialect, Your.DLL</property>
<property name="connection.driver_class">Your.NS.IQClientDriver, Your.DLL</property>
于 2013-08-12T11:52:42.977 回答