2017-11-25 9 views
1

私はソフト削除機能を実装しようとしています。ほとんどすべてのテーブルにDeletedAtフィールドがあります。私の問題は今、この機能がWeb APIにネイティブではないので、私はすべてのクエリにDeletedAt == nullのwhere節を入れなければならないでしょう。私の質問は、どこにこの句をWeb APIに入れるか、あるいはSQL Serverからも可能であるかどうかを指定する方法ですか?C#Web APIとSQL server global where節

+0

あなたはEFを使用していますか? –

+0

はい私はEFを使用しています。 – Jed

答えて

2

あなたがEntity Frameworkを使用していることを希望します。あなたが好きな弁別を追加することにより、OnModelCreatingイベントでグローバルフィルタを追加することができます。

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Foo>().Map(m => m.Requires("DeletedAt").HasValue(false)); 
    modelBuilder.Entity<Bar>().Map(m => m.Requires("DeletedAt").HasValue(false)); 
} 

OR

あなたは、このパッケージを使用することができます。https://github.com/zzzprojects/EntityFramework.DynamicFilters

+0

はい私はEFを使用していますが、後で試してみます。 – Jed

+0

あなたの答えを試してみてください。移行などを更新する必要はありますか?私は次のエラーが発生します: '指定されたスキーマが有効ではありません。エラー:エラー2019:指定されたメンバー・マッピングが無効です。 'MyModel'型のメンバ 'DeletedAt'の 'Edm.DateTime [Nullable = True、DefaultValue =、Precision =]'メンバ 'DeletedAt'の 'SqlServer.bit [Nullable = True、DefaultValue =]'タイプ 'CodeFirstDatabaseSchema.MyModel'にあります。 ' – Jed