1

そのため、私は小さなデータベース(および場合によってははるかに大きなデータベース)を再設計しているところですが、ビジネスオブジェクトのリビジョン/履歴を使用することの価値を示したいと思います。データをAccessからMSSQL2008に切り替えています。

デザイン自体で使用する「リビジョン履歴」のバージョンについて社内で多くの議論があり、すべてのテーブルに「RevisionId」を追加することにしたと思いました。

この設計では、追跡したいすべてのテーブルにRevisionIdを追加します。たとえば、次のような2つのテーブル間のナビゲーションプロパティと関係を作成するための最良の方法は何でしょうか。

| Vendor | VendorContact |  

ベンダーが複数の連絡先を持つことができる場合。連絡先自体は改訂中です。カスタム拡張機能が必要ですか、それとも私はこれを考えすぎていますか?

前もって感謝します。

4

1 に答える 1

1

したがって、おそらく連絡先テーブルのキーは(生成された一意のID +リビジョンID)になります。

また、一意のIDのみを使用して、ベンダーと連絡先の間にFK関係があります。したがって、1:manyマッピングになります。

また、現在の連絡先を取得するための簡単なリクエストが作成されるvendor.Contacts.OrderByDescending(c => c.RevisionId).First()か、必要に応じてその連絡先の改訂履歴全体を取得できます。

または、その連絡先が時間の経過とともにどのように変化したかを追跡しようとしていますか(つまり、BさんではなくAさんでした)?つまり、リレーションシップ自体にRevisionIdが必要ですか?

それとも、関係の改訂とそれが指す連絡先の改訂の両方を追跡しようとしていますか?

vendor.VendorContacts.OrderBy...().First().Contact.OrderBy...().First()

これはかなり速く醜くなる可能性があります!

于 2010-05-01T06:14:29.793 に答える