Быстрая конфигурация NHibernate MySQL с двигателем InnoDB - PullRequest
1 голос
/ 13 июля 2011

как настроить конфигурацию nhibernate (свободную конфигурацию) для MySql и заставить механизм по умолчанию быть InnoDB, чтобы я мог использовать транзакции

благодаря

Ответы [ 2 ]

2 голосов
/ 09 ноября 2012

Или вы можете использовать этот пользовательский диалект

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

0 голосов
/ 13 июля 2011

Как правило, нет ничего конкретного, что вам нужно было бы делать с вашими отображениями для работы с 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>
...