我々はタスクと呼ばれるクラスを持っている:エンティティへのLINQにパラメータとしてFUNCを渡すと「内部.NET Frameworkデータプロバイダーエラー1025」エラー
public partial class Task : EntityObject
{
public EntityCollection<TaskUser> TaskUsers { get {...} set{...} }
}
それは、これに接続しているユーザが含まれていTaskUsersと呼ばれるナビゲーションプロパティを持っていますタスク:
public partial class TaskUser : EntityObject
{
public User User { get {...} set { } }
}
すべてのTaskUserオブジェクトには、Userオブジェクトがあります。
IQueryable<Task> tasks
となります。 ID = 1のユーザーに割り当てられたタスクを検索します。
tasks.Where(t => t.TaskUsers.Any(a => a.User.ID == 1))
すべて正常に動作します。使用する場合
Func<TaskUser, bool> function = a => a.User.ID == 1;
return tasks.Where(t => t.TaskUsers.Any(function));
'Internal .NET Framework Data Provider error 1025'
エラーが発生します。どうして? Expression
クラスを使用してもっと複雑なフィルタを作成したいのですが、単純なFunc
を渡すことができない場合、これはできません。私は何をすべきか?
EDIT
たぶん
Func<TaskUser, bool> function = a => a.User.ID == 1;
return tasks.Where(t => t.TaskUsers.Any(function));
は動作しますが、
Expression<Func<TaskUser, bool>> expression = a => a.User.ID == 1;
return tasks.Where(t => t.TaskUsers.AsQueryable().Any(expression));
作品はありません!それが私の必要なすべてです。
ふむ、私はちょうど(http://stackoverflow.com/questions/11990158/internal- [同様の質問]の恵みを掲載しましたnet-framework-data-provider-error-1025)をご覧ください。賞金を手に入れたいですか? –
実際、あなたのように 'Func'ではなく' Expression'を使ってみましたが、私は**できませんでした**。他のアイデア? –