2012-02-29 9 views
1

私は多くの組織でデータベースを共有しています(複数テナントのシナリオ)。LightSpeedデータベースとマルチテナントデータベース

承認されたユーザーは、そのような制約を毎回明示的にコーディングする必要なく、組織の1つのデータのみを表示できるようにしたいと考えています。

これを行うにはLightSpeedのアプローチが良いですか?

+0

「毎回」とはどういう意味ですか?異なる組織のデータが同じ組織のデータからどのように伝えることができますか? –

+0

リポジトリサービスにメソッドを追加してユーザーのリストを取得する場合、特定のテナントによってフィルタリングされるように指定する必要はありません。私は暗黙のうちに欲しいです。ある種類の基本クラスで定義されています。 –

答えて

3

可能な解決策の1つは、テナントごとに別々のテーブルを用意することです。テナント識別子の接頭辞が付いたテーブルです。

たとえば、顧客テーブルを持っている場合は、

Client1_Customer 
Client2_Customer 

ライトスピードは戦略の命名に建てINamingStrategyの独自の実装に置き換えることができますDefaultNamingStrategy呼びかけているテナント名を前に付けできます。現在のテナントを識別して対応するテーブル名を選択できるように、GetTableNameを実装するだけです。

+0

私はこれの音が好きです。私はこれをさらに調査します。 –

+0

@objektivsこの方法でマルチテナントを実装しました。うまくいく。 –

1

LightSpeedのQueryFilterAttributesという優れた機能を発見しました。 LightSpeedのネイティブソフト削除と同じように、組織IDをクエリに挿入できる組織クエリフィルタ属性を作成できます。

非常に滑らかです。

+0

さて、あなたの組織に関連する何らかの識別子を持つ単一のテーブルがあり、それらの行だけを返すためにQueryFilterを使用していますか? –

+0

それは私が得ているもの、Rohanです。 –

+0

クール、ありがとうobjektivs。 –

関連する問題