私はまだExpressionsに対して少し環境に配慮しており、この問題を理解するのに苦労しています。これはEFよりもラムダ式の問題である可能性がありますが、誰かが少なくとも私を正しい方向に向けることができることを望んでいます:
私は次のことをしようとしています:
internal static IQueryable<TSource> WithSecurity<TSource>(thisIQueryable<TSource> source, Expression<Func<Security.Access, TSource, bool>> predicate, params MyRoles[] roles)
{
DL.MyContext ctx = Csla.Data.DbContextManager<DL.MyContext>.GetManager().DbContext;
var accessData = ctx.Access.Where(e => roles.Contains((MyRoles)e.Role_ID));
Expression x = predicate asLambdaExpression;
source =
from c in source
where accessData.Any(predicate)
select c;
return source;
}
where句では、述語がタイプであるため明らかに問題がありますExpression<Func<Security.Access, TSource, bool>>
が、Anyはを期待していExpression<Func<Security.Access, bool>>
ます。変換する方法についての支援は大歓迎です。