Association値でEntityDataSourceをフィルター処理します
-
03-07-2019 - |
質問
Entity Frameworkは本当に好きですが、私にとっては挑戦的な重要な要素がいくつかあります。 AssociationカラムでEntityDataSourceをフィルタリングする方法を教えてもらえますか? EFはFK値を非表示にし、代わりにAssociationプロパティを持っています。 PersonTypeの関連付けを持つエンティティPersonを指定すると、Person Entityをタイプ別にフィルタリングする場合、次のように動作するはずです。
GridDataSource.EntityTypeFilter = "it.PersonType.PersonTypeID = 1";
または
GridDataSource.Where = "it.PersonType.PersonTypeID = '1'";
または偶数
GridDataSource.WhereParameters.Add(new Parameter("it.PersonType.PersonTypeID", DbType.Object, "1"));
しかし、それらはどれも機能しません。誰でもこれを行う方法を知っていますか?
解決
あなたが探している答えは、次のようなIncludeメソッドの使用を含むと思います:
entities.it.Include("PersonType").Where(a => a.PersonType.PersonTypeID = '1');
他のヒント
LINQを使用してメモリにフィルターを適用しようとしましたか? (または、おそらくデータベースに対してですか?)
var personType = new PersonType { Id = 1 };
var query = PersonDataSource.Where(p => p.PersonType.Equals(personType));
// use this query as the DataSource for your GridView
このようなことをしていないことは認めざるを得ませんが、このトリックを使用して、最初に関連するエンティティをロードせずにエンティティを更新/作成しました。
所属していません StackOverflow