Единственный способ для Linq to SQL «автоматически» узнать, имеет ли столбец значение, - это фактически запросить его у базы данных. Вы можете расширить частичный класс с помощью полей / свойств, но это не устранит поиск.
Одна из вещей, которую вы могли бы сделать, - это создать вычисляемый столбец (при условии, что здесь SQL 2005+, в противном случае вам придется попытаться адаптировать его к вашей СУБД). Если ваша таблица выглядит так, например:
CREATE TABLE Foo
(
FooID int NOT NULL IDENTITY(1, 1) PRIMARY KEY,
FooName varchar(50) NOT NULL,
FooImage varbinary(max) NULL
)
Вы бы добавили вычисляемый столбец следующим образом:
ALTER TABLE Foo
ADD FooHasImage AS CASE
WHEN FooImage IS NULL THEN 0
ELSE 1
END
Затем вы можете добавить столбец FooHasImage
к вашей сущности Linq to SQL, не задерживать его загрузку и проверить это свойство вместо явной проверки свойства FooImage
.
Кроме того, я чувствую себя обязанным указать, что хранение изображений в базе данных таким образом является неоптимальным. Это может быть необходимо, я не знаю много о вашей среде, но если вы используете SQL Server 2008, тогда рассмотрите возможность использования FILESTREAM
вместо этого, так как он будет использовать файловую систему для дешевого "автономного" хранения больших двоичных объектов вместо заполнения все это в базе данных.