LINQ - Не выбирая определенные поля?

Нет способа удалить куки в соответствии со спецификацией HTTP. Чтобы эффективно «удалить» куки-файл, вы устанавливаете дату истечения срока действия на некоторую дату в прошлом. По сути, это может привести к следующему (согласно документации модуля cookie):

cookies.set('testtoken', {maxAge: Date.now()});

Или согласно спецификации HTTP:

cookies.set('testtoken', {expires: Date.now()});

Оба из них должны работать. Вы можете заменить Date.now() на new Date(0) для действительно старой даты.

9
задан vidalsasoon 30 May 2009 в 13:59
поделиться

4 ответа

К сожалению, при использовании LINQ to SQL нет оптимального решения.

У вас есть 3 варианта:

  1. Вы возвращаете Entity с отслеживанием контекста и всем, в данном случае Image, со всеми полями.
  2. Вы выбираете поля и возвращаете анонимный тип.
  3. Вы выбираете поля и возвращаете строго типизированный настраиваемый класс,
8
ответ дан 4 December 2019 в 20:24
поделиться

[При использовании Linq 2 SQL] В конструкторе DBML есть опция для отложенной загрузки отдельных столбцов таблицы. Установите значение true для вашего большого двоичного поля. Затем эти данные не загружаются, пока они не будут фактически использованы.

[Вопрос для всех вас: кто-нибудь знает, поддерживает ли инфраструктура сущностей отложенную загрузку varbinary / varchar в MSVS 2010? ]

Решение №2 (для entity framework или linq 2 sql):

Создайте представление таблицы, которое включает только первичный ключ и varchar (max) / varbinary (max). Сопоставьте это с EF.

В своем конструкторе Entity Framework удалите свойство varbinary (max) / varchar (max) из определения таблицы (оставив его определенным только в представлении). Это должно исключить поле из операций чтения / записи в эту таблицу, хотя вы можете проверить это с помощью регистратора.

Обычно вы получаете доступ к данным через таблицу, которая исключает большой двоичный объект данных. Когда вам нужен большой двоичный объект, вы загружаете строку из представления. Я не уверен, что вы сможете писать в представление, я не уверен, как вы будете писать.

1
ответ дан 4 December 2019 в 20:24
поделиться

Будет создано новое изображение только с этими полями. Когда вы вернетесь, чтобы получить данные для выбранных изображений, я бы предложил продолжить и получить полный набор данных вместо того, чтобы пытаться объединить его с существующими данными идентификатора / имени. Поля id / name предположительно малы по сравнению с данными, и код будет намного проще, чем попытка выполнить слияние. Кроме того, может не потребоваться фактическое создание объекта Image, использование анонимного типа также может соответствовать вашим целям.

image = this.Context.ImageSet
                    .Where(n => n.ImageId == imageId)
                    .Where(n => n.Albums.IsPublic == true)
                    .Select( n => new Image { ImageId = n.ImageId, Name = n.Name }
                    .Single();
1
ответ дан 4 December 2019 в 20:24
поделиться

В качестве альтернативы вы можете использовать новый выбор в выражении запроса ...

var image =
(
    from i in db.ImageSet
    where i.ImageId == imageId && i.Albums.IsPublic
    select new
    {
        ImageId = i.ImageId,
        Name = i.Name
    }
).Single()

Выражения запроса LINQ фактически преобразуются в выражение лямбда во время компиляции, но я предпочитаю использовать выражение запроса обычно потому что я считаю его более читаемым и понятным.

Спасибо :)

0
ответ дан 4 December 2019 в 20:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: