私のWinFormsアプリケーションにビジネス エンティティ Order があり、エンティティが複数のビューで使用され、各ビューがアプリケーション内の異なるドメインまたはユース ケースを処理するとします。例として、1 つは注文を管理し、もう 1 つは 1 つの注文を掘り下げて追加データを表示します。
nHibernate (またはその他の ORM) を使用し、ビューごと (または db アクションごと) に 1 つの session/dataContext を使用すると、同じ Order (orderId = 1 としましょう) に対して 2 つの異なるインスタンスを取得することになります。機能的には同じエンティティですが、技術的には 2 つの異なるインスタンスです。はい、Equals/GetHashcode を実装して、同じように「見える」ようにすることができます。
エンティティごとに 1 つのインスタンスを使用するのに対して、ビューごとまたはユースケースごとにプライベート インスタンスを使用する理由は何ですか?
単一のインスタンスを持つことには、INotifyPropertyChanged イベントを共有し、追加の (非永続的な) データを共有するという利点があります。
各ビューにプライベート インスタンスがあると、ビュー レベルで元に戻す機能の柔軟性が得られます。上記の例では、ユーザーが注文の詳細を変更できるようにし、変更を保存しないという柔軟性をユーザーに与えます。ここでは、ビュー/ユースケース間の同期がデータの永続性レベルで発生します。
あなたの主張は何ですか?