У меня есть файлы сопоставления NHibernate XML, которые прекрасно работают в базах данных MS SQL. Пример таблицы:
<class name="Worm" table="`Worms`" schema="`dbo`">
Теперь мне нужно использовать точно такой же файл сопоставления (без изменений) для создания базы данных MariaDB (или MySQL). Понятно, что такие базы данных не имеют схем. Итак, я пытаюсь создать соглашение об именах, чтобы «схема» стала префиксом таблицы, например, «dbo_Worm».
Я пытался использовать
var schemaUpdate = new NHibernate.Tool.hbm2ddl.SchemaUpdate(configuration);
, добавив пользовательский класс стратегии именования в «конфигурацию». На данный момент мой пользовательский класс ничего не делает: просто выдает NotImplementedExceptions ():
public class MyCustomNamingStrategy : INamingStrategy
{
public static MyCustomNamingStrategy Instance => new MyCustomNamingStrategy();
public string ClassToTableName(string className)
{
throw new NotImplementedException();
}
public string PropertyToColumnName(string propertyName)
{
throw new NotImplementedException();
}
public string TableName(string tableName)
{
throw new NotImplementedException();
}
public string ColumnName(string columnName)
{
throw new NotImplementedException();
}
public string PropertyToTableName(string className, string propertyName)
{
throw new NotImplementedException();
}
public string LogicalColumnName(string columnName, string propertyName)
{
throw new NotImplementedException();
}
}
Причины две:
- Я никогда не достигал точек останова моего класса MyCustomNamingStrategy, чтобы начать с, так что я даже не знаю, если это путь к go. Это даст мне какую-либо информацию относительно «схемы»? Я не знаю ...
- Код, который вызывает SchemaUpdate инструмента, полностью игнорирует пользовательскую стратегию именования, и выдается исключение MySQL, указывающее, что база данных 'dbo' не найдена (да .. ..)
Перепробовав все и обыскав везде, я обращаюсь к вам за помощью. Может ли кто-нибудь помочь мне
- Сохранить тот же XML Файл отображения, но
- Создать таблицы с префиксами с именами их схем?
Будем благодарны за любые подсказки!