すべてのDDDエンティティにはIDが必要です。ですから、私の質問は、ProductDetailが製品に関する知識を持っていれば、製品とProductDetailのようなマスター詳細関係にありますか? ProductDetailクラスのProductIDプロパティが必要ですか?データベースでは、これは2つのオブジェクトをリンクする唯一の方法ですが、DDDではこのベストプラクティスなので、もちろん正常です。私はLinq2SqlをORMマッパーとして使用していますので、これは指定されていますが、これは正しい方法ではないと思います。これに知恵の言葉を持っている人は誰ですか?DDD、マスター詳細関係の関連エンティティ
答えて
外部キーは、リレーショナルデータモデルの成果物です。オブジェクトモデルはコンテナの概念で動作します。したがって、OrderにはOrder Lineのコレクションが含まれています。注文行に商品などが含まれています
エンドユーザはどのようにProductDetailを取得しますか?答えが製品からその製品にナビゲートされる可能性が高い場合、ProductDetailは単にProductのプロパティ、またはProductのプロパティであるProductDetailsのコレクションの一部です。
オブジェクト指向のコードでは、ProductDetailオブジェクトは親製品への参照を持つ必要はありません。
データベースには、Id列を持つ製品のマスターテーブルがある可能性があります。次に、それが関連している製品のIDへの外部キーを持つProductDetailの子テーブルがあります。
非常に重要ドメイン駆動設計の原則は、OOコードにのみ適用されることを覚えておいてください。リレーショナル・データベースとリレーショナル・データ・モデリングは全く別のものです。
ORMを使用して2つのモデルを結ぶ方法は? ORMは、ProductDetailクラスのForiegnキーを定義させます。 ProductIdを定義せずにドメインモデルを処理できるORMはありますか。 Raw SQLは唯一の方法ですか? –
ORMを使用するのではなく、自分のデータアクセス層を常にロールしています。 Hibernateのような最も良いORMツールは、親テーブルへの外部キー参照を持つ子テーブルをデータベースに作成できるようにする必要があります。 ORMを正しく構成すると、リポジトリは同じDDD集約の一部として親と子の両方を取り出すことができます。 – dthrasher
- 1. firedacマスター - 詳細関係のdoesntの仕事のデータベーステーブルの
- 2. AWS dynamoDBの正しいデータモデリングとマスター/詳細関係
- 3. マスター - 詳細関係で "DataTable.Select(?)"を使用する方法
- 4. DDD内のエンティティ間の関係
- 5. なぜエンティティのフレームワークエンティティのマスターの詳細エンティティの編集
- 6. マスター詳細ビューアプリケーション
- 7. Entity Framework(マスター詳細)マスターから別のフォームにある詳細
- 8. マスター - 詳細:アンドロイドに
- 9. JHipsterマスター詳細UI
- 10. RadGridマスター/詳細Telerik
- 11. grafanaマスター詳細ダッシュボード
- 12. マスター詳細 - マスターボタン - MasterBtn
- 13. マスター詳細in AngularJS
- 14. マスター/詳細動作
- 15. iOSマスター詳細秒
- 16. 詳細を変更すると、AngularJs、マスター詳細更新マスター
- 17. dddの多対多関係
- 18. DDDエンティティ間の関係を保存する方法は?
- 19. xamarin.formsのマスター詳細ページ
- 20. jaGridマスターの詳細1回
- 21. Xamarin.Forms iOSのマスター/詳細エッジスワイプ
- 22. Xamarinマスターの詳細ページオートハンバーガー
- 23. ノックアウトのマスター詳細JS
- 24. Androidのマスター詳細レイアウト
- 25. 複数のエンティティをビューコントローラにバインドするMacOS(マスター/詳細)
- 26. マスター詳細レポートを作成
- 27. マスター詳細ビューASP.NET MVC
- 28. ストリーム解析 - >マスター - 詳細
- 29. マスター詳細コンポーネント角度4
- 30. Hibernateマスター詳細カスケード挿入
ドメイン駆動型設計とは何が関係していますか? – jlembke
外部キーProductDetailsクラスのProductIdはDDDとは関係ありません。リレーショナルデータモデルの成果物です。それが私の指摘でした。 – Prankster