使用流畅的nhibernate连接到sybase IQ数据库

时间:2013-08-12 09:40:31

标签: nhibernate fluent-nhibernate sybase sybase-iq

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

任何帮助都将不胜感激。

由于

1 个答案:

答案 0 :(得分: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问题。

Is it possible to use (fluent)nhibernate with an odbc connection?

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

<property name="dialect">Your.NS.IQDialect, Your.DLL</property>
<property name="connection.driver_class">Your.NS.IQClientDriver, Your.DLL</property>