0

Breeze JS で論理/ソフト削除を実行するにはどうすればよいですか?

明らかに、論理的な削除を実装する方法はデータ モデルに依存します (ステータス = 2)。そのため、Breeze コントローラーでエンティティが削除対象としてマークされていることを何らかの方法で検出し、列を変更して更新に変換します。 、または推奨される方法は何ですか?

これは、私が信じている物理的な削除を実行する方法を説明していますが、論理的な削除は行っていません。 http://www.breezejs.com/documentation/inside-entity#DeleteEntity

4

2 に答える 2

2

あなたの提案はうまくいく可能性がありますが、これに対する私の最初のパスは、softDelete単にステータスを に設定するメソッドをクライアント側クラスに追加すること2です。また、サーバー上の各クエリに「where Status!=2」条件を追加して、デフォルトでdeletedエンティティが返されないようにします。たとえば、次のようになります。

[HttpGet]
public IQueryable<Customer> Customers(bool includedDeleted) {
   if (includeDeleted) {
     return ContextProvider.Context.Customers;
   } else {
     return ContextProvider.Context.Customers.Where(c = c.Status != 2);
   }
} 

さらに改良すると、呼び出しsoft deleted後にクライアント上のエンティティを自動的に切り離すことができます。SaveChangesつまり、「保存された」エンティティを繰り返し処理し、status == 2

これが理にかなっていることを願っています。

于 2013-04-08T18:06:37.277 に答える