我正在使用NHibernate和传统的rdbms规则引擎.我正在使用GenericDialect,但生成的一些sql无法正常工作.如果我需要为这个规则引擎编写自定义方言怎么做?
这是一个示例方言:
using System;
using System.Collections.Generic;
using System.Web;
///
/// This class ensures that the tables created in our db are handling unicode properly.
///
public class NHibernateMySQL5InnoDBDialect : NHibernate.Dialect.MySQL5Dialect
{
public override String TableTypeString { get { return " ENGINE=InnoDB DEFAULT CHARSET=utf8"; } }
}
Run Code Online (Sandbox Code Playgroud)
它所在的程序集引用了NHibernate.dll
hibernate.cfg.dll(注意我没有在这里设置'connection.connection_string'属性,这是我的特定设置,通常你会在这里有连接字符串):
<?xml version="1.0" encoding="utf-8"?>
<!-- This is the ByteFX.Data.dll provider for MySql -->
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" >
<session-factory name="NHibernate.Test">
<property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
<property name="dialect">NHibernateMySQL5InnoDBDialect, Assembly1</property>
<property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>
</session-factory>
</hibernate-configuration>
Run Code Online (Sandbox Code Playgroud)
在一些设置中,方言线将是
<property name="dialect">Assembly1.NHibernateMySQL5InnoDBDialect, Assembly1</property>
Run Code Online (Sandbox Code Playgroud)
以及创建ISessionFactory的代码:
NHibernate.Cfg.Configuration cfg = new NHibernate.Cfg.Configuration();
cfg.Configure();
cfg.Properties["connection.connection_string"] = ConnectionStringForDatabase();
cfg.AddDirectory(PathToMappingsIfYouUseNonStandardDirectory);//not needed if using embedded resources
return cfg.BuildSessionFactory();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3105 次 |
| 最近记录: |