Для проекта, над которым я работаю, я не могу использовать схему [dbo]. Посмотрев на источник EventStore, не кажется тривиальным использование схемы не-dbo.
Пока что лучшее, что я придумал, - это использовать собственный диалект, подобный этому:
- Подкласс CommonSqlDialect
- Добавить частный экземпляр MsSqlDialect
- Затем переопределите все виртуальные свойства CommonSqlDialect, чтобы сделать что-то вроде
Пример:
public override string AppendSnapshotToCommit
{
get { return customizeSchema(_msSqlDialect.AppendSnapshotToCommit); }
}
private string customizeSchema(string dboStatement)
{
// replace "[dbo]" with "[notdbo]",
// replace " Commits" with " [notdbo].Commits",
// replace " Snapshots" with " [notdbo].Snapshots"
}
Мне также нужно настроить свойство InitializeStorage, чтобы заменить «sysobjects» на «sys.objects», чтобы я мог добавить дополнительное ограничение на имя схемы.
Это работает, но, похоже, должны быть параметры подключения для настройки имен схемы и таблицы.
UsingSqlPersistence(...)
.WithSchema(...)
.WithCommitsTable(...)
.WithSnapshotsTable(...)
Есть ли явно лучший способ справиться с этим, который я пропустил?