如何为MySql设置nhibernate配置(fluent配置),并强制默认引擎为InnoDB,以便我能够使用事务
谢谢
发布于 2012-11-09 06:18:34
或者,您可能想要使用此自定义方言
public class MySQL5InnoDBDialect
: MySQL5Dialect
{
public MySQL5InnoDBDialect()
{
RegisterColumnType(DbType.Guid, "CHAR(36)"); //You don't "really" need this one for what you asked
}
public override string TableTypeString
{
get { return " ENGINE=InnoDB"; }
}
public override bool HasSelfReferentialForeignKeyBug
{
get { return true; }
}
public override bool SupportsCascadeDelete
{
get { return true; }
}
}(相应地更新您的.config文件)
<property name="dialect">
Org.Zighinetto.MySQL5InnoDBDialect, Org.Zighinetto
</property>当你没有自己的MySQL安装时,方言技巧工作得很好。您使用共享主机),默认为通常的MyISAM
发布于 2011-07-13 11:51:13
通常,在使用mysql和innodb时,您不必对映射做任何特定的操作。
切换到innodb引擎是你必须自己在mysql内部完成的事情,这与nHibernate无关。http://dev.mysql.com/doc/refman/5.1/en/storage-engine-setting.html
下面是我用于mysql (innodb)和nHibernate的示例配置:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.connection_string">Data Source=localhost;Database=test;UID=root;pwd=;</property>
<property name="dialect">NHibernate.Dialect.MySQL5Dialect</property>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
<property name="show_sql">false</property>
<property name="connection.release_mode">auto</property>
<property name="adonet.batch_size">500</property>
<property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
<property name="hbm2ddl.keywords">none</property>
</session-factory>
</hibernate-configuration>https://stackoverflow.com/questions/6673324
复制相似问题