2011-07-26 4 views
1

フォーク、 最近導入された階層化された.Netソリューションでは、特定のビジネスオブジェクトが未確認/確認済みであることに対応する必要があることがわかりました。特定のカテゴリのシステムユーザは、このビジネスエンティティを未確認状態で作成できるようになりました。エンティティは、確認されるまで、既存のシステムやリポジトリには見えないようにする必要があります。 ビジネスオブジェクトは、ルックアップやその他の機能でソリューション全体で使用されます。エンティティを格納する基礎となるSQLテーブルは、レポートのストアドプロシージャやビューなどで参照されます。 誰もそのような変更をどのように組み込むべきかを提案できますか?オプションには、クラス/テーブルにバイナリフラグを追加すること、または新しい未確認インスタンスを別のテーブルに格納し、一度確認された「ライブ」テーブルに移動することが可能です。重要なビジネスエンティティのポストデプロイの変更

答えて

0

私はいくつかの理由のために、別のテーブルにこれを格納します:

  1. 未確認項目は異なるビジネスルールを持っているので、彼らはあなたのドメイン内の別の概念として扱われるべきです。
  2. 別の状態が必要な場合は、バイナリフラグのアプローチは縮尺されませんが、別のテーブルアプローチが適用されます。
  3. 未確認/確認済み状態を確認するためにアプリケーションのルックアップやその他の機能を改良するのは退屈でエラーになりやすいでしょう。
1

未確認のエンティティをステージングテーブルの一種に格納することができます。このステージングテーブルでは、エンティティが確認されると既存のテーブルに移動し、既存のエンティティテーブルに依存する現在の操作には影響しません。

また、この新しいテーブルにマップするこのエンティティ( "UnconfirmedEntity")を表す完全に新しい/異なるクラスを作成すると、このエンティティを「確認」して削除する何らかの種類のサービスを構築できます未確認テーブルから既存の確認済みテーブルに移動します。