問題タブ [soft-delete]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
xpages - URL ハッシュ unid ドキュメントが exlib の動的コンテンツ コントロールを使用してソフト削除された場合、別のページにリダイレクトします。
extlib で動的コンテンツ コントロールを使用しています。このコントロールの優れた機能の 1 つは、次のように、url の documentId からデータ ソースを自動的に接続することです。
"...#content=doc&action=openDocument&documentId=C0282D5F7AF66787C1257ACF0028FD3A"
unid がアプリケーションに存在する場合は、データ ソースをそれに接続します。(ignoreRequestParameters が設定されていない場合)
私の問題は、ドキュメントにフィールドを設定し、一部のユーザーがそれを削除すると、このフィールドに基づいてビューから除外される独自のソフト削除機能を使用していることです。
ただし、dyn コンテンツ コントロールは、ドキュメントがビュー内にあるかどうかを気にしません。ドキュメントがアプリケーションに存在する場合、データ ソースに接続します。
そのため、データ ソースを読み込まず、ドキュメントが論理的に削除された場合にユーザーを別の場所にリダイレクトする方法を見つける必要があります。可能?
注意: unid は URL ハッシュの背後に表示されるため、SSJS を使用してアクセスすることはできません。
//トーマス
c# - C#、Entity Framework、およびSQLServer2008での子レジスタの削除
SQL Serverでは、テーブルの親行を削除するときにカスケードで削除を使用できることを知っていますが、SQL Serverでカスケードで削除するよりも、アプリケーション(リポジトリ)でこのロジックを実装する方がよい場合があります。
だから私は2つの質問があります。まず、SQL Serverの削除カスケードで使用しない場合、EntityFrameworkでこの状況を解決する方法。
- ユーザーAは、親レジスタとその子をコンテキストに追加します
- ユーザーBは、親レジスタに新しい子を追加します。したがって、ユーザーAにはこの子がコンテキストに含まれていません
- ユーザーAは、自分のコンテキストにロードされている親とすべての子を削除します。これらの子には、ユーザーBによって追加された新しい子は含まれません。
実際には、問題はありません。ユーザーAが親を削除しようとすると、参照整合性の例外が発生し、すべての子をロードして再試行する必要があります。
これはSQLServerにとって余分な作業です。これは、ユーザーAにすべてのレジスタを再度送信する必要があるためです。
SQL Serverのカスケードで削除を使用する場合、この問題は存在しないため、適切なオプションだと思います。
したがって、私の2番目の質問は、SQL Server(または他のデータベース)の削除カスケードで使用するのは良い考えですか、それともビジネスロジック(リポジトリ)でこのケースを実装する方が良いですか?
ありがとう。
c# - 流暢な nhibernate と余分な遅延ロードを使用したソフト削除可能
DefaultDeleteEventListener と DefaultLoadEventListener をオーバーライドすると、Nhibernate を使用してソフト削除可能オブジェクトを実装するための非常に優れたソリューションが提供されました。
DefaultLoadEventListener の要約として次のように述べています。
これは、ExtraLazyLoading を実行するときにフィルターが適用されないことを意味します。その結果、たとえば、削除されたエンティティがカウントされます。クエリ中にソフト削除可能フィルターを適用する別の方法はありますか? 常に手動で制限を追加してフィルタリングするよりも良い方法はありますか?
ruby-on-rails - Devise認証で削除されたスコープを使用する
Rails アプリで認証を処理するために Devise を使用しており、permanent_records を使用してユーザーを論理的に削除しています。私の User モデルのデフォルトのスコープは、削除されていないユーザーです。ユーザーが自分のアカウントを削除 (非アクティブ化) した場合、Facebook と同様に、ログインすることでアカウントを再アクティブ化できるようにしたいと考えています。問題は、Devise が削除されたユーザーを探す方法を知らないため、アカウントが見つからないことです。sessions#create メソッドをオーバーライドすることを考えました
しかし、これは Warden によって処理されているため、運が悪いようです。深く掘り下げ始めると、物事を壊し始めるのではないかと心配しています。
何か案は?
ありがとう!
nhibernate - Fluent NHibernate を使用した論理削除されたデータのフィルタリング
Fluent NHibernate を使用して、アプリケーションに単純なソフト削除を実装しようとしています。すべてのエンティティにはブール フラグIsDeleted
があり、削除操作ではこのプロパティのみが true に設定されます。たとえば、多対多の関係を持つなど、相互に参照するより複雑なエンティティのクエリに苦労しています。Person
のコレクションを持つエンティティがあるとしましょうProject
:
Person
p にProject
proj1 と proj2があるとします。proj1 が論理的に削除された場合、そのIsDeleted
プロパティを true に設定するだけです。ただし、p のプロジェクトにアクセスすると、そのフラグとは関係なく、コレクションも proj1 で自動的に遅延ロードされます。もちろん、たとえば でコレクションをいつでもフィルタリングできますProjects.Where(x => !x.Isdeleted)
が、これはコードの繰り返しにつながり、バグが発生しやすくなります。この種のデータ ジャグリングをプレゼンテーション レイヤーから分離したいと考えています。
IsDeleted
すべてのクエリと遅延ロードされたコレクションに適用される、「falseに設定されたエンティティのみをロードする」というグローバル ルールによって、このプロセスを自動化したいと考えています。
私が試したこと:
- イベントをオーバーライドしますが、すべての DB 読み取りを傍受し、読み取られたすべてのエンティティをフィルター処理することはできませんでした。
- 遅延ロードされたコレクションを処理できなかったフィルター。
コードを繰り返さずにソフトデリートを実装し、プレゼンテーションレイヤーから簡単に分離できる最も簡単な方法は何ですか?
php - Symfony2 SoftDeleteableがQueryBuilder Deleteで機能しない
Softdelete の動作は、次のコードのように、エンティティ マネージャーを介して delete ステートメントを実行すると正常に動作します。
ただし、QueryBuilder を介して同じ機能を実行すると、データベースでハード削除が実行されます
エンティティマネージャーまたはクエリビルダーを介して、すべての場合にソフト削除を許可するにはどうすればよいですか