web-dev-qa-db-ja.com

Entity Framework Domain Object as Business Object

ユニットテストや後でデータアクセスを切り替えることに関心がない場合、エンティティフレームワークオブジェクトをビジネスオブジェクトとして使用しても問題ありませんか?

エンティティとデータコンテキストを生成した既存のデータベースがあり、メソッドと追加の(非データベース)プロパティを保持するための部分クラスがあります。リポジトリパターンや、これを設定する一見複雑な方法についてはかなり読みましたが、すべてが必要かどうかはわかりません。これは、Entity Framework 6.1.3を使用した.NET Webフォームアプリであり、単体テストはありません。

このような単純化したアプローチを避けるべき理由は他にありますか?

5
user2023116

ビジネスオブジェクトとして使うべきではないと思います。 Vaughn Vernonによると EFは柔軟性がないため、ビジネスオブジェクトとして直接使用できません

代わりに、それらを状態オブジェクトとして使用します。つまり、ビジネスロジックをより適切にカプセル化してラップします。リンクで私は彼が私がDDDについて話していることを提供した。ビジネスオブジェクトと呼ぶものは、DDDでは集約ルートと呼ばれますが、要点はまだ残っています。

2

POCOをビジネスオブジェクトとして使用するように拡張しません。ドメインロジックとデータロジックが混在するため、コードを将来維持することが非常に難しくなります。

しかし、あなたはユニットテストを行わないことも述べました。したがって、おそらく、維持する必要のない一時的な短期プロジェクトを構築していて、それで問題ない可能性があります。ただ、それはあなた(または他の開発者)が後で対処しなければならない多くの技術的負債を生み出す可能性があることを覚えておいてください。

0
Tzu