2013-06-04 5 views
1

У меня есть приложение C#, которое сохраняет фотографии в базе данных SQL Server. SQL Server сохраняет фотографии в столбце типа varbinary(max). И приложение конвертирует byte[], чтобы показать картинку на моем экране.База данных изображений SQL Server

Что я хочу сделать, это проверить изображение, добавлено ли оно ранее. Прежде всего, вся база данных хранится в наборе данных. Затем я попытался сравнить изображения, проверив равенство байт-массивов изображений. Но это не работает. Поскольку (в зависимости от моего понимания) байт-массив изображения (который я должен был добавить через openfiledialog), не соответствует массиву байтов изображения (который поступает из набора данных), даже если они все одинаковые картинки (одно и то же имя, такое же место, одинаковый размер и т. д.)

Это приводит к более важному вопросу о моем .Net, C#, SQL Server и обучении ado.net .. В таких ситуациях, какой путь более подходит? Проверить наличие данных на бизнес-уровне или на уровне данных? (извините мой плохой английский)

+0

Вы правы, что разные представления одного и того же изображения не будут эквивалентны в прямых тестах. Вам нужно согласованное представление изображения, с которым вы всегда можете сравнить. Tom Studee предложил такой метод (через предыдущий пост). – DonBoitnott

ответ

3

Возможно, вы захотите рассмотреть вопрос о сохранении хэша md5 изображения и использовать его для сравнения. См. Этот ответ: https://stackoverflow.com/a/8802486/214919

+0

спасибо Том .. Это сработало. Но я жду ответа на свой второй вопрос .. –

+0

@SertanPekel Это зависит от требований приложения, но в целом я бы посоветовал проверить существование бизнес-объектов в домене/бизнес-слое. В зависимости от дизайна проверка может извлекать объект из кеша определенного типа или инициировать запрос для извлечения объекта из слоя данных. –

Смежные вопросы