Я внедрил в зашифрованном виде концепцию сущности в своем приложении через эту ссылку ниже.Ключ CEK недоступен, и миграция не будет применяться после удаления локальной базы данных, созданной ранее при запуске моего приложения.
Это Up() метод миграции в моем initialSchema.cs файл в папке кочевок моего текущего приложения.
public override void Up()
{
CreateTable(
"dbo.PersonalInfoTables",
c => new
{
ID = c.Int(nullable: false, identity: true),
Firstname= c.String(),
LastName= c.String(),
Address= c.String(),
SSN = c.String(),
})
.PrimaryKey(t => t.ID);
}
После этого я прокомментирую заявку SSN и добавил приведенный ниже оператор SQL для шифрования столбца SSN.
//manually add the encrypted columns
Sql("ALTER TABLE [dbo].[PersonalInfoTables] ADD [SSN] [nvarchar](11) COLLATE Latin1_General_BIN2 ENCRYPTED WITH(ENCRYPTION_TYPE = DETERMINISTIC, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256', COLUMN_ENCRYPTION_KEY = CEK_Auto1) NOT NULL");
А затем запустить Update-Database команды в пакете сена консоли.
Приведенный выше код будет работать только в том случае, если ключ CEK уже доступен для зашифрованного столбца. но когда я снова запускаю свое приложение после удаления существующей локальной базы данных, он дает исключение, например, ключ CEK недоступен, а также не применяет миграцию.
Не могли бы вы рассказать мне, как решить вышеуказанную проблему после добавления инструкции ALTER SQL и удаления локальной базы данных?
Вышеупомянутая проблема разрешена только, изменен код возврата() еще раз. но я не хочу этого сценария.
С уважением,
Прадипом
Спасибо, я пошел по той же ссылке в этом блоге, что и код миграции Up() успешно выполнен, если ключ CEK уже существует, он работает, когда мы зашифрованы указанным столбцом, иначе это дает исключение. Я работаю с локальной базой данных в SSMS. – pradeep
Да, это должно дать вам исключение, если CEK не существует. Перед выполнением метода Up() вам необходимо будет предоставить CEK –