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

Я прочитал ВСЕ из:

и искали немного больше, но все еще не нашли решения. Я видел, что это происходит в EF 3.5 и в 4.0 Метод Contains должен поддерживаться, но я использую EF 4, но получаю эту ошибку. У меня есть фотогалерея, где в альбомах может быть любое количество разных фотографий, и каждая фотография может принадлежать к любому количеству альбомов . Итак, это отношение "многие ко многим".

У меня есть свойство VisibleObjects , которое используется примерно 100 другими методами, которые работают хорошо, но я все равно вставляю его: (I я определенно уверен, что проблема я s не вызвано чем-то здесь)

static IQueryable VisibleObjects
    {
        get
        {
            return from obj in db.GlobalObjectSet where obj.IsVisible && !obj.SiteUser.IsDeactivated orderby obj.ID descending select obj;
        }
    }

Я пробовал несколько разных запросов:

У меня есть свойство VisiblePhotos :

Это не сработало:

static IQueryable VisiblePhotos(this Album a)
    {
        return from p in VisibleObjects.OfType() where a.Photos.Contains(p) select p;
    }

] Изменено на это:

static IQueryable VisiblePhotos(this Album a)
    {
        return from p in VisibleObjects.OfType() where a.Photos.Any(other => p.ID == other.ID) select p;
    }

Все еще не работает.

Вот метод вызова:

public static List GetLatestPhotosByAlbum(Album alb, int count = 3)
    {
        lock (sync)
        {
            return alb.VisiblePhotos().OrderByDescending(p => p.ID).Take(count).ToList();
        }
    }

Не работает, заменено на это:

public static List GetLatestPhotosByAlbum(Album alb, int count = 3)
    {
        lock (sync)
        {
            return (from p in VisibleObjects.OfType()
                    where alb.Photos.Any(ph => ph.ID == ph.ID)
                    select p).ToList();
        }
    }

Все еще не работает. Жалобы на невозможность создать константу моего типа объекта Photo, которая является объектом Entity со свойством ID, если это помогает. Я не уверен в истинной причине ошибки, и у меня нет других идей относительно запросов. Я думаю, что название метода говорит само за себя: я пытаюсь получить фотографии в данном альбоме. Загрузка записей альбома в память не является решением, запрос должен выполняться в базе данных, а не в памяти. Мне нужно объяснение этого исключения, почему оно здесь возникает, и как я могу заставить свой запрос работать.

11
задан Community 23 May 2017 в 12:16
поделиться