MVC с использованием Linq to Entity с шифрованием sql - PullRequest
0 голосов
/ 07 августа 2009

В настоящее время я использую шифрование sql и хотел бы продолжить использовать его через Linq.У меня есть все хранящиеся в CRUD процедуры proc, созданные и подключенные к таблице в модели, для обработки шифрования / дешифрования через sql.

Основная проблема заключается в том, что моя модель базы данных видит тип поля varbinary (max), который используется для хранилища шифрования sql.

Проблемы:

A.Конфигурирование Entity Model - Невозможно назначить поле varbinary зашифрованной таблицы для параметров хранимой процедуры CRUD типа varchar.Хранимые процедуры принимают значение varchar, шифруют его и затем сохраняют в поле varbinary зашифрованных таблиц.

B.За пределами создания модели сущности - при обращении к таблице зашифрованных сущностей она ожидает поле varbinary, тогда как по сути это действительно поле varchar.Это, в свою очередь, вызывает проблемы покрытия при попытке присвоить значения этому зашифрованному полю.

Как обойти это.Мне нужно приложение для просмотра этого поля как расшифрованного, как это происходит, когда он возвращается из моего сохраненного процесса.Затем операторы CUD будут принимать строковые значения, а сохраненный процесс, связанный с ними в модели объекта, будет выполнять шифрование.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 07 августа 2009

Мы недавно сделали это именно в такой среде. Это не очень простое решение.

Я не смог найти НЕТ способа заставить объекты обрабатывать шифрование SQL. Вот что я сделал.

Поднес стол к конструктору сущностей.
Измените поля в вашей таблице на varchar
Создайте sproc, который возвращает все эти поля, с зашифрованным полем, декодированным в строки
В сопоставлении сущностей импортируйте sproc
Измените sproc, чтобы вернуть таблицу
Создайте еще один sproc для обновления этих полей (или всей таблицы по вашему выбору)
Измените таблицу, чтобы НЕ обновлять или читать зашифрованные поля из базы данных (это позволяет вам по-прежнему использовать этот объект для других целей.

Кроме того, вы можете изменить объект-сущность так, чтобы он не включал эти поля, и чтобы эти значения были специально доступны через sproc.

1 голос
/ 07 августа 2009

Существует 2 технологии "Linq to SQL" и "Entity Framework".

Entity Framework ожидает совпадения подписи хранимой процедуры и столбцов таблицы.

Есть два способа исправить это.

  • Вы можете добавить фиктивное поле varbinary в хранимый процесс и подать varchar в таблицу. Это позволило бы всему получить то, что он ожидает, вы просто игнорируете поля, которые вам не нужны.
  • Выполнение хранимой процедуры без использования таблицы (существуют разные способы выполнения хранимых процедур в EF). Тогда вы избежите проблемы с несоответствием
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...