さまざまな企業でマルチテナント アプリケーションを使用しています。私はまだこれで成功していません。しかし、私のシナリオは、さまざまな会社 (テナント) のテーブルセットを持つ単一の SQL サーバー データベースを持っていることです。
したがって、私がやりたいことは、マルチテナント アプリケーションの概念に従って、テーブル内のスキーマ プレフィックスを使用してテーブルにアクセスするテーブルの規約を追加することです。テナントごとにデータベースを使用していませんが、テナントごとにスキーマを使用しています。データベース ファイルは単一のファイルです。
私がやりたいのは、私のテーブルがこのようなものであることSachin Sales & Service Pvt Ltd$Web User Setup Header
です。そのため、テーブルクエリが生成されるときに、クエリを実行するSachin Sales & Service Pvt Ltd
前にプレフィックスを追加する必要があります。接頭辞は必要に応じて変更される場合があります。静的ではありません。だから私はデフォルトでこのように見える IClassConvention をオーバーライドすることを考えました
public class TableNameConvention : IClassConvention
{
public void Apply(IClassInstance instance)
{
instance.Table( instance.EntityType.Name);
}
}
とにかくstring schemaname
、このような別のパラメーターを渡して、スキーマプレフィックス付きの目的のテーブル名を生成できますか? 私の考えは、次のようなことをすることです:
public class TableNameConvention : IClassConvention
{
public void Apply(IClassInstance instance, string schemaname )
{
instance.Table(schemaname + instance.EntityType.Name);
}
}
もしそうなら、私の質問はこのようにここにあります。上記の点を達成できれば、テナントごとのスキーマの問題は解決しますか? そして2番目に、コンパイル中に上記のエラーが発生しない場合でも(技術的にはそうすべきではありません)、スキーマ名をそのオーバーライドに渡すにはどうすればよいですか?これは単なる慣習であり、その場で操作できないため、どのように呼び出す必要があるかを意味します(実際にやりたい)