私のアプリケーションでIsDeletedカラムを使用してソフト削除を実装していて、ORMにEF 6 Code Firstを使用しています。それは、ユーザーが多くの役割Entity Framework 6遅延読み込みナビゲーションプロパティの自動フィルタリング
public class User
{
private ICollection<Role> _roles;
public virtual ICollection<Role> Roles
{
get { return _roles?? (_roles= new List<Role>()); }
protected set { _roles= value; }
}
}
を持っていると私はuser.Rolesを使用するとき、私はそれを必要とする:私は例.FOR(多くの関係で)遅延ロードのナビゲーションプロパティにアクセスするためのドット演算子を使用したときに自動的に削除するエンティティをフィルタリングしますオートフィルターは、エンティティを削除しますので、私はそれが多くの場所で発生しますので、同じように明示的にそれを書き込みません:
user.Roles.where(u => u.IsDeleted == false).ToList();
私はEFインターセプタを考えているが、それはすべてのクエリのために適用されると、私はまだしたいですビジネス要件のために一部の場所で削除されたエンティティを読み込みます。 これを効率的に達成する他の方法はありますか?
ありがとうございます。
ありがとうSimpleVar。しかし、私のアプリにはこのような数千のコレクションがあるので、ラッパーのプロパティを追加したり、Active()拡張メソッドを使用すると非常に時間がかかります。 –