私が取り組んでいるプロジェクトでは、[dbo] スキーマを使用できません。EventStore ソースを見ると、非 dbo スキーマを使用するのは簡単ではないように見えます。
これまでのところ、私が思いついた最善の方法は、次のようなカスタム方言を使用することです。
- サブクラス CommonSqlDialect
- Msqldialect のプライベート インスタンスを追加します。
- 次に、 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(...)
私が見逃したこれを処理するための明らかに良い方法はありますか?