Сохраните процедуру выбора всех полей из одной таблицы, используя соединение
Я очень разочарован от linq до sql, когда имею дело со многими ко многим отношениям с расширением пропуска. Это не позволяет мне использовать объединенные запросы. Не уверен, что это так для SQL Server 2005, но в настоящее время я использую SQL Server 2000.
Теперь я хочу написать процедуру хранения для извлечения таблицы, которая соответствует двум таблицам, например, Album_Photo (Album->Album_Photo<-Photo) и Photo, и мне нужны только данные Photos, поэтому я сопоставляю идентификатор альбома с Album_Photo и использую этот идентификатор чтобы соответствовать фото. В процедуре магазина я просто выбираю все объединенные данные. После этого в linq to sql я создаю новый объект Album.
например
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 ответ
Похоже, у вас есть ситуация, когда запрос уже выполнен к тому времени, когда вы захотите отфильтровать его позже в своем коде.
Можете ли вы сделать что-то вроде...
var album = (бла-бла-бла).AsQueryable(). Где (filterClause), когда у вас достаточно информации для обработки
что произойдет, если вы попробуете album.where (фильтр) позже в коде? Это то, что вы пытаетесь?