Я использовал следующий код для создания создания базы данных скриптMySql поколения схемы с NHibernate
Configuration configuration = new Configuration();
configuration.Configure();
SchemaExport schemaExport = new SchemaExport(configuration);
using(TextWriter stringWriter = new StreamWriter("create.sql"))
{
schemaExport.Execute(false, false, false, true, null, stringWriter);
}
и SQL, он генерирует хорошо работает с MS SQL. Когда я должен был перейти к MySql я изменил конфигурацию NHibernate, чтобы:
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
<property name="connection.connection_string">Server=localhost;Database=db;User ID=root;Password=sa;</property>
<property name="dialect">NHibernate.Dialect.MySQLDialect</property>
</session-factory>
но SQL генерируется на этот раз does't выполнить в MySQL Query Browser из-за ошибок. Вот образец создания MySQL скрипт, порожденного NHibernate:
alter table Order drop foreign key FK_User_Order
alter table OrderItem drop foreign key FK_Order_Item
alter table Item drop foreign key FK742DC178AD99756A
drop table if exists User
drop table if exists Order
drop table if exists OrderItem
drop table if exists Item
drop table if exists Category
create table User (
Id INTEGER NOT NULL AUTO_INCREMENT,
role INTEGER not null,
is_active TINYINT(1) not null,
contact_name VARCHAR(100),
phone VARCHAR(100),
address VARCHAR(100),
email VARCHAR(100) not null,
name VARCHAR(100) not null,
password_hash LONGBLOB not null,
login VARCHAR(100) not null unique,
is_new TINYINT(1) not null,
price_type INTEGER not null,
access_id INTEGER not null,
primary key (Id)
Я получил следующее сообщение об ошибке при попытке выполнить его
линии сценария: 2 У вас ошибка в синтаксис SQL; в руководстве, соответствует вашему серверу MySQL версия для корректного синтаксиса использовать рядом с «разнарядке внешнего ключа FK_User_Order
альтер таблица OrderItem падение иностранных к» в строке 1
Любые идеи почему Nhiberante-сгенерированный sql не будет работать?
Пользователя также ключевое слово в MySql. Вы можете использовать ключевые слова как имена столбцов таблицы, но тогда вам придется обернуть это имя символами ' – Trygve