のは、我々は単純なデータ構造を持っているとしましょう:一部のエンティティが共有されている場合の集約の識別?
どちらも、Interface
とNetwork Printer
は(強制FKSで)別のテーブルに格納されているEndPoint
を、持っています。たとえば、Interface
にはEndPoint’s
のポート番号が必要です.1000-2000とNetwork Printer
には、2000〜3000の間のポート番号が必要です。 EndPoint
は、実際に直接アクセスする必要がないため、そのコンテキストを知らなくてもエンドポイントの値を直接変更したくないため、集約ルートにすることはできません。 Per this post:あるアグリゲートに何かが属している場合、他のアグリゲートはそれを読み取り専用データと呼ぶかもしれません。それはEndPoint
がInterface
とNetwork Printer
に属していないことを意味しますか?または、私の場合のように、同じEndPoint
インスタンスは、2つの集約の間で共有されることはありません。したがってInterface
とNetwork Pritner
は常にそれ自身のEndPoint
を更新する予定であり、一貫性の違反は起こりません。そうだね?
ありがとうございます。実際にはIDフィールドを持つテーブルに格納されていても、ValueObjectとして表現することができます。ドメインレベルで公開されていないIDですか? – Tenek
@Tenekあなたは単に同じテーブルにデータを持つことはできませんか?つまり、値であっても専用のエンドポイントテーブルを持つことができますが、パーシスタンスモデルの観点からはエンティティになり、モデルの観点からは値(隠れたIDである可能性が高い)になります。 – plalx
データはレガシーDBからのものです。今のところEndPointテーブルは3つの異なる場所から参照されますが、値は決して共有されません。とにかくEndPointはそのリポジトリからリポジトリで参照できるので、私はドメインオブジェクトのために隠されたIDフィールドを行うか、まったくそれを避けます。 EndPointを値オブジェクトとして使用すると、リポジトリが公開されず、全体構造が単純化されなくなりました。アドバイスをありがとう! – Tenek