Проблема с запросом Linq to Entities - PullRequest
1 голос
/ 13 июня 2011

Сначала я буду благодарен любой вашей помощи в этом вопросе. Я делаю этот запрос (Linq to Entities)

публичное переопределение IEnumerable Execute (UserGroup userGroup) {

        return from a in _ctx.Activities.OfType<ResourceActivity>()
               where userGroup.Users.Contains(a.User)
               group a by new { a.User, a.Href } into fg
               select new UserResourceActivityReturnValue
               {
                   UserDBIdentity = fg.Key.User.DbId,
                   UserIdentity = fg.Key.User.Id,
                   UserName = fg.Key.User.Name,
                   ResourceName = fg.Key.Href,
                   ResourceAccess = fg.Count()
               };

И у меня есть эта ошибка:

"Невозможно создать постоянное значение типа« Data.User ». В этом контексте поддерживаются только примитивные типы (« Int32, String и Guid »)."

Итак, я изменил это на:

публичное переопределение IEnumerable Execute (UserGroup userGroup) {

        return from a in _ctx.Activities.OfType<ResourceActivity>()
               from u in userGroup.Users
               where a.User.DbId == u.DbId
               group a by new { a.User, a.Href } into fg
               select new UserResourceActivityReturnValue
               {
                   UserDBIdentity = fg.Key.User.DbId,
                   UserIdentity = fg.Key.User.Id,
                   UserName = fg.Key.User.Name,
                   ResourceName = fg.Key.Href,
                   ResourceAccess = fg.Count()
               };

И я продолжаю видеть ту же ошибку, пожалуйста, помогите.

Мой электронный адрес: aalbalat@uclv.edu.cu

Большое спасибо

1 Ответ

0 голосов
/ 13 июня 2011

Исправление к исходному запросу:

return from a in _ctx.Activities.OfType<ResourceActivity>()
        where userGroup.Users.Any(arg => arg.DbId == a.User.DbId)
        group a by 
            new
            {
                UserId = a.User.Id, 
                UserDbId = a.User.DbId, 
                UserName =  a.User.Name, 
                a.Href
            } into fg
        select new UserResourceActivityReturnValue
        {
            UserDBIdentity = fg.Key.UserDbId,
            UserIdentity = fg.Key.UserId,
            UserName = fg.Key.User.UserName,
            ResourceName = fg.Key.Href,
            ResourceAccess = fg.Count()
        };

Проблема в том, что вы использовали User сущность в Contains и в GroupBy.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...