Сохраните процедуру выбора всех полей из одной таблицы, используя соединение - PullRequest
0 голосов
/ 06 августа 2009

Я очень разочарован от linq до sql, когда имею дело со многими ко многим отношениями с расширением пропуска. Это не позволяет мне использовать объединенные запросы. Не уверен, что это так для SQL Server 2005, но в настоящее время я использую SQL Server 2000.

Теперь я собираюсь написать процедуру хранения для выборки таблицы, которая соответствует двум таблицам, например, В Album_Photo (Album-> Album_Photo <-Photo) и в таблице «Фотографии» нужны только данные «Фотографии», поэтому я сопоставляю идентификатор альбома с «Альбом_Фото» и использую этот идентификатор для соответствия фотографии. В процедуре магазина я просто выбираю все объединенные данные. После этого в linq to sql я создаю новый объект Album. </p>

, например

var albums = (from r in result
    where (modifier_id == r.ModifierID || user_id == r.UserID)
    select new Album() { 
        Name = r.Name, 
        UserID = r.UserID, 
        ModifierID = r.ModifierID, 
        ID = r.ID, 
        DateCreated = r.DateCreated, 
        Description = r.Description, 
        Filename = r.Filename 
    }).AsQueryable();

Я использовал AsQueryable, чтобы получить результат как IQueryable, а не IEnumerable. Позже я хочу что-то сделать с коллекцией, она выдает мне эту ошибку:

System.InvalidOperationException: результаты запроса не могут быть перечислены более одного раза.

1 Ответ

0 голосов
/ 06 августа 2009

Похоже, у вас есть ситуация, когда запрос уже выполнен к тому времени, когда вы захотите отфильтровать его позже в своем коде.

Можете ли вы сделать что-то вроде ...

var album = (бла-бла-бла) .AsQueryable (). Где (filterClause), когда у вас достаточно информации для обработки

что произойдет, если вы попробуете album.where (фильтр) позже в коде? Это то, что вы пытаетесь?

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