EntityFramework.Filtersパッケージを使用して、いくつかのデフォルトおよびダイナミクスフィルタをエンティティに設定しています。うまくいきますが、Q:新しいフィルタパラメータを動的に設定すると、最初の値を設定したまま無視されます。EntityFramework.Filters動的パラメータ
デバッグモードでは、CultureHelper.GetCurrentCulture().Key
は新しいカルチャセットを正常に返していますが、フィルタパラメータは設定されていますが、何も起こりません。 OnModelCreation
を上げた
私だけOnModelCreation
を引き起こし、コンストラクタでフィルタを、有効にする前に、任意のContextプロパティにアクセスすることで、この問題を再現することができ
public partial class DataModel : DbContext
{
public DataModel() : base("name=DataModel")
{
var currentLanguageId = CultureHelper.GetCurrentCulture().Key;
this.EnableFilter("HideDeleted");
this.EnableFilter("CurrentLanguage").SetParameter("currentLanguageId", currentLanguageId);
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
DbInterception.Add(new FilterInterceptor());
modelBuilder
.Conventions
.Add(
FilterConvention.Create<IDeleted, int>("HideDeleted", (e, Deleted) => e.Deleted == false),
FilterConvention.Create<ILanguage, long>("CurrentLanguage", (e, currentLanguageId) => e.LanguageId == currentLanguageId)
);
}
}
'currentLanguageId'静的変数を作成して渡す代わりに使用しようとしましたか? – ASpirin
はい私は@ASpirinをスタティックとして完全に使用しました。フィルタパラメータは最初の値のみを考慮しています。 –
'CultureHelper.GetCurrentCulture()'のコードは何ですか? – ASpirin