エンティティクエリでLIKE句を実行しようとしています。私が見た例では、このようなことをするために動的linqを使用していますが、私のコードは...
var query = context.StudySet
.Where("it.PatientName LIKE @patientName", new ObjectParameter("patientName", patientName);
...私にSystem.Linq.Dynamic.ParseExceptionを与えます
Additional information: Expression of type 'Boolean' expected
contextはEF 6のコードファーストのDbContextで、 patientNameは文字列です
私のコードの何が問題になっていますか?
私は自分の間違いに気づきました。
クエリを渡すメソッドはDynamic Linqの一部であると想定していましたが、実際はObjectQueryの標準のWhereメソッドのバリアントにすぎません。 (コードを最初に)DbContextからObjectContextを取得した場合、それはすべて問題ありません。
ObjectContext objectContext = ((IObjectContextAdapter)context).ObjectContext;
ObjectSet<Study> studySet = objectContext.CreateObjectSet<Study>();
var query = studySet.
Where("it.PatientName LIKE @patientName", new ObjectParameter("patientName", patientName));
DynamicLINQを使用する場合は、次のようにコードを変更する必要があります
var query = context.StudySet.Where("it.PatientName.Contains(@0)", patientName);
DynamicLinqはLIKE
演算子を解析できないため