2011-07-13 12 views

答えて

0

を使用することがイムは、一般的にその特定のものはありません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> 
+0

データベースを作成するためにnhibernate SchemaExportを使用するとどうなりますか? – Eatdoku

+0

それでも同じ設定になります。私は自分でSchemaExportを使用します。 –

+0

テーブル/カラムにInnoDBエンジンを使用し、もう1つにMyISAMを使用したいのですが? – Eatdoku

2

それとも、このカスタム方言

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> 

fあなたがMySQLインストールを所有していないとき(つまり、共有ホスティングを使用しています)、デフォルトは通常のMyISAMです