当前位置: 首页 > 面试题库 >

如何编写自定义nHibernate方言?

朱阳晖
2023-03-14
问题内容

我正在将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"; } }
}

它所在的程序集引用了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>

在某些设置中,方言行是

<property name="dialect">Assembly1.NHibernateMySQL5InnoDBDialect, Assembly1</property>

和创建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();


 类似资料:
  • 问题内容: 我正在使用Python的应用程序编写一些测试用例。现在,我需要将一个对象列表与另一个对象列表进行比较,以检查第一个列表中的对象是否符合我的期望。 如何编写自定义方法?应该怎么办?是否应该在失败时引发例外?如果是,哪个例外?以及如何传递错误消息?错误消息应该是unicode字符串还是字节字符串? 不幸的是,官方文档没有解释如何编写自定义断言方法。 如果您需要一个真实的示例,请继续阅读。

  • 问题内容: 我需要为AngularJS编写一个自定义模块,但是我找不到关于该主题的任何好的文档。如何为AngularJS编写一个可以与他人共享的自定义模块? 问题答案: 在这种情况下,您认为文档无法再为您提供帮助,一个很好的学习方法是查看其他已经构建的模块,看看其他人是如何做到的,他们如何设计架构以及如何将它们集成到其中。他们的应用。 在查看其他人的工作之后,您至少应该有一个起点。 例如,看看任何

  • 我想在日志文件的开头写入自定义头行。自定义头是日期/时间,XML文件名, 在log4j中,我可以通过扩展PatternLayout来创建自定义头。 我为自定义头包含了PatternLayout的log4j属性config和子类CustomFileHeaderLayout。工作很好。 log4j.属性

  • 在 imi 框架中,使用注解可以实现很多功能。比如:路由、模型定义、事务、缓存等等 除了内置的注解以外,如果编写属于自己的注解呢? 这篇教程就来教大家来编写属于自己的注解。 注解定义 注解扫描 imi 是常驻内存运行的,所以冷启动时采用了全量扫描的方式,来实现注解缓存。使用的时候,就和读取配置一样简单高效。 一般需要在配置文件里的beanScan中,配置注解类所在命名空间。在 imi 框架中,涉及

  • 本文向大家介绍MyBatis 如何编写一个自定义插件?相关面试题,主要包含被问及MyBatis 如何编写一个自定义插件?时的应答技巧和注意事项,需要的朋友参考一下 自定义插件实现原理: MyBatis 自定义插件针对 MyBatis 四大对象(Executor、StatementHandler、ParameterHandler、ResultSetHandler)进行拦截: Executor:拦截内

  • 我想为Atom编写一个命令,它由两个或多个预先存在的命令组成,比如“Select Line”和“Cut”。我该怎么做?