New Posts New Posts RSS Feed: Long error on join with where...
  FAQ FAQ  Forum Search   Calendar   Register Register  Login Login

Long error on join with where...

 Post Reply Post Reply
Author
jsobell View Drop Down
Groupie
Groupie
Avatar

Joined: 02-Apr-2009
Location: Australia
Posts: 80
Post Options Post Options   Quote jsobell Quote  Post ReplyReply Direct Link To This Post Topic: Long error on join with where...
    Posted: 06-May-2010 at 4:12pm
Trying a relatively simple query with a join, but adding a Where clause causes a MethodAccessException:

            Guid gid = custacct.CustomerAccountID;
            IEntityQuery<UserProfile> query =
                from users in RepositoryDomainContext.UserProfiles
                join p in RepositoryDomainContext.Permissions
                on users.UserProfileId equals p.UserProfileId
                where p.ElementID == gid
                select users;

            RepositoryDomainContext.ExecuteQueryAsync(query, cb => callback(cb.Results), null);

this results in the exception below.
Removing the where works perfectly, as does restructuring the query:

            IEntityQuery<UserProfile> query =
                from users in RepositoryDomainContext.UserProfiles
                join p in RepositoryDomainContext.Permissions.Where(pp => pp.ElementID == gid)
                on users.UserProfileId equals p.UserProfileId
                select users;

Any suggestions?

Cheers,
 Jason

Exception:
{System.MethodAccessException: Attempt by method 'System.Linq.Expressions.Expression.CreateLambda(System.Type, System.Linq.Expressions.Expression, System.String, Boolean, System.Collections.ObjectModel.ReadOnlyCollection`1<System.Linq.Expressions.ParameterExpression>)' to access method 'System.Linq.Expressions.Expression`1<System.Func`2<<>f__AnonymousType0`2<QuestMetrics.Manager.Model.Data.UserProfile,QuestMetrics.Manager.Model.Data.Permission>,System.Boolean>>.Create(System.Linq.Expressions.Expression, System.String, Boolean, System.Collections.ObjectModel.ReadOnlyCollection`1<System.Linq.Expressions.ParameterExpression>)' failed.
   at System.RuntimeMethodHandle.PerformSecurityCheck(Object obj, RuntimeMethodHandleInternal method, RuntimeType parent, UInt32 invocationFlags)
   at System.RuntimeMethodHandle.PerformSecurityCheck(Object obj, IRuntimeMethodInfo method, RuntimeType parent, UInt32 invocationFlags)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Linq.Expressions.Expression.CreateLambda(Type delegateType, Expression body, String name, Boolean tailCall, ReadOnlyCollection`1 parameters)
   at System.Linq.Expressions.Expression.Lambda(Type delegateType, Expression body, String name, Boolean tailCall, IEnumerable`1 parameters)
   at System.Linq.Expressions.Expression.Lambda(Type delegateType, Expression body, ParameterExpression[] parameters)
   at IdeaBlade.Linq.TransformExpressionVisitor.VisitLambda(LambdaExpression le, Expression bodyExpr, IEnumerable`1 parameterExpressions)
   at IdeaBlade.Linq.ExpressionVisitor.VisitExpressionCore(Expression e)
   at IdeaBlade.Linq.TransformExpressionVisitor.VisitExpressionCore(Expression expr)
   at IdeaBlade.Linq.LocalizingExpressionVisitor.VisitExpressionCore(Expression expr)
   at IdeaBlade.Linq.ExpressionVisitor.VisitExpression(Expression expr)
   at IdeaBlade.Linq.ExpressionVisitor.VisitExpressionCore(Expression e)
   at IdeaBlade.Linq.TransformExpressionVisitor.VisitExpressionCore(Expression expr)
   at IdeaBlade.Linq.LocalizingExpressionVisitor.VisitExpressionCore(Expression expr)
   at IdeaBlade.Linq.ExpressionVisitor.VisitExpression(Expression expr)
   at IdeaBlade.Linq.ExpressionVisitor.<VisitExpressions>b__0(Expression e)
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at IdeaBlade.Linq.ExpressionVisitor.VisitExpressions(IEnumerable`1 expressions)
   at IdeaBlade.Linq.ExpressionVisitor.VisitExpressionCore(Expression e)
   at IdeaBlade.Linq.TransformExpressionVisitor.VisitExpressionCore(Expression expr)
   at IdeaBlade.Linq.LocalizingExpressionVisitor.VisitExpressionCore(Expression expr)
   at IdeaBlade.Linq.ExpressionVisitor.VisitExpression(Expression expr)
   at IdeaBlade.Linq.ExpressionVisitor.<VisitExpressions>b__0(Expression e)
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at IdeaBlade.Linq.ExpressionVisitor.VisitExpressions(IEnumerable`1 expressions)
   at IdeaBlade.Linq.ExpressionVisitor.VisitExpressionCore(Expression e)
   at IdeaBlade.Linq.TransformExpressionVisitor.VisitExpressionCore(Expression expr)
   at IdeaBlade.Linq.LocalizingExpressionVisitor.VisitExpressionCore(Expression expr)
   at IdeaBlade.Linq.ExpressionVisitor.VisitExpression(Expression expr)
   at IdeaBlade.Linq.ExpressionVisitor.Visit(Expression expr)
   at IdeaBlade.Linq.LocalizingExpressionVisitor.Visit(Expression expr)
   at IdeaBlade.EntityModel.ServerEntityQuery..ctor(EntityQuery query)
   at IdeaBlade.EntityModel.EntityQuery`1.GetServerQuery()
   at IdeaBlade.EntityModel.EntityQueryFinder.get_ServerQuery()
   at IdeaBlade.EntityModel.EntityQueryFinder.Execute()
   at IdeaBlade.EntityModel.EntityManager.ExecuteQueryCore(IEntityQuery query, Boolean isAsync)
   at IdeaBlade.EntityModel.EntityManager.<ExecuteQueryAsyncCore>b__4c[T](EntityQueryOperation`1 op)
   at IdeaBlade.EntityModel.AsyncProcessor`1.Execute()
   at IdeaBlade.EntityModel.EntityManager.ExecuteQueryAsyncCore[T](AsyncProcessor`1 processor)
   at IdeaBlade.EntityModel.EntityManager.ExecuteQueryAsync[T](IEntityQuery`1 query, Action`1 userCallback, Object userState)
   at QuestMetrics.Manager.DataModel.Repositories.PermissionRepository.GetUserProfilesWithPermissions(CustomerAccount custacct, Action`1 callback, Expression`1 filter)}



Edited by jsobell - 06-May-2010 at 4:13pm
Back to Top
jsobell View Drop Down
Groupie
Groupie
Avatar

Joined: 02-Apr-2009
Location: Australia
Posts: 80
Post Options Post Options   Quote jsobell Quote  Post ReplyReply Direct Link To This Post Posted: 10-May-2010 at 7:05am
Ping!
Back to Top
ting View Drop Down
IdeaBlade
IdeaBlade
Avatar

Joined: 27-Mar-2009
Location: San Francisco
Posts: 427
Post Options Post Options   Quote ting Quote  Post ReplyReply Direct Link To This Post Posted: 10-May-2010 at 5:10pm
I believe this has to do with a Silverlight assembly trust issue.  In order to get the original query syntax to work, the assembly containing the query must grant trust to System.Core.  We've modified the templates for DevForce 2010 to do this automatically, but if you didn't start from a DevForce 2010 template or you've created a new assembly, you will need to add this assembly level attribute to the AsssemblyInfo.cs file:
 
[assembly: InternalsVisibleTo("System.Core, PublicKey=00240000048000009400000006020000002400005253413100040000010001008d56c76f9e8649383049f383c44be0ec204181822a6c31cf5eb7ef486944d032188ea1d3920763712ccb12d75fb77e9811149e6148e5d32fbaab37611c1878ddc19e20ef135d0cb2cff2bfec3d115810c3d9069638fe4be215dbf795861920e5ab6f7db2e2ceef136ac23d5dd2bf031700aec232f6c6b1c785b4305c123b37ab")]
 
Let us know if that works!
 


Edited by ting - 10-May-2010 at 5:17pm
Back to Top
jsobell View Drop Down
Groupie
Groupie
Avatar

Joined: 02-Apr-2009
Location: Australia
Posts: 80
Post Options Post Options   Quote jsobell Quote  Post ReplyReply Direct Link To This Post Posted: 10-May-2010 at 6:16pm
That would make sense. This was in a project converted from WCF RIA.
I'll try it later today and let you know.

Thanks,
 Jason
Back to Top
jsobell View Drop Down
Groupie
Groupie
Avatar

Joined: 02-Apr-2009
Location: Australia
Posts: 80
Post Options Post Options   Quote jsobell Quote  Post ReplyReply Direct Link To This Post Posted: 13-May-2010 at 7:27am
Works perfectly, thanks!

Cheers,
 Jason
Back to Top
ting View Drop Down
IdeaBlade
IdeaBlade
Avatar

Joined: 27-Mar-2009
Location: San Francisco
Posts: 427
Post Options Post Options   Quote ting Quote  Post ReplyReply Direct Link To This Post Posted: 14-May-2010 at 7:28pm
Sweet!  Thanks for letting us know.
Back to Top
 Post Reply Post Reply

Forum Jump Forum Permissions View Drop Down