Нет способа удалить куки в соответствии со спецификацией HTTP. Чтобы эффективно «удалить» куки-файл, вы устанавливаете дату истечения срока действия на некоторую дату в прошлом. По сути, это может привести к следующему (согласно документации модуля cookie):
cookies.set('testtoken', {maxAge: Date.now()});
Или согласно спецификации HTTP:
cookies.set('testtoken', {expires: Date.now()});
Оба из них должны работать. Вы можете заменить Date.now()
на new Date(0)
для действительно старой даты.
К сожалению, при использовании LINQ to SQL нет оптимального решения.
У вас есть 3 варианта:
[При использовании 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) из определения таблицы (оставив его определенным только в представлении). Это должно исключить поле из операций чтения / записи в эту таблицу, хотя вы можете проверить это с помощью регистратора.
Обычно вы получаете доступ к данным через таблицу, которая исключает большой двоичный объект данных. Когда вам нужен большой двоичный объект, вы загружаете строку из представления. Я не уверен, что вы сможете писать в представление, я не уверен, как вы будете писать.
Будет создано новое изображение только с этими полями. Когда вы вернетесь, чтобы получить данные для выбранных изображений, я бы предложил продолжить и получить полный набор данных вместо того, чтобы пытаться объединить его с существующими данными идентификатора / имени. Поля 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();
В качестве альтернативы вы можете использовать новый выбор в выражении запроса ...
var image =
(
from i in db.ImageSet
where i.ImageId == imageId && i.Albums.IsPublic
select new
{
ImageId = i.ImageId,
Name = i.Name
}
).Single()
Выражения запроса LINQ фактически преобразуются в выражение лямбда во время компиляции, но я предпочитаю использовать выражение запроса обычно потому что я считаю его более читаемым и понятным.
Спасибо :)