2017-07-06 1 views
0

を実装している場合、私はフィルタEntityFrameworkプラスチェックデータは、インタフェース

this.Filter<BaseModel>(q => q.Where(x => x.CompanyId == companyId); 

を持っている私のカスタムインターフェイス「IGlobalDatabaseObject」を実施しているものは何でも、「X」をチェックする方法はありますか?

this.Filter<BaseModel>(q => q.Where(x => x.CompanyId == companyId || x is IGlobalDatabaseObject); ? 

ので、「x.CompanyId ==企業ID」DBクエリはデータを返しますか、そのデータがグローバルインターフェイス

を実装している場合、私はEfのプラスライブラリを使用しています(github.com/zzzprojects/EntityFramework -Plus)

+0

これは、Entity Frameworkでうまくいくかどうかわかりません。あなたは 'BaseModel'が' IGlobalDatabaseObject'を実装しているかどうかチェックしていますか、またはここで何らかの継承が行われていますか? – DavidG

+0

私はEF Plusライブラリを使用しています。 https://github.com/zzzprojects/EntityFramework-Plus/。継承は次のとおりです。Model:BaseModel、IGlobalDatabaseObject –

答えて

2

あなたは EF+ Query Filter Enable/Disableの機能を求めていると思います。あなたの場合、次のようなものがあります。

// The key identifying your filter 
var key = new object(); 

// Create filter for classes that inherit BaseModel 
this.Filter<BaseModel>(key, q => q.Where(x => x.CompanyId == companyId)); 

// Disable the filter for classes that implement IGlobalDatabaseObject 
this.Filter<IGlobalDatabaseObject>(key).Disable();