0

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

https://blogs.msdn.microsoft.com/sqlsecurity/2015/08/27/using-always-encrypted-with-entity-framework-6/

Это 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 и удаления локальной базы данных?

Вышеупомянутая проблема разрешена только, изменен код возврата() еще раз. но я не хочу этого сценария.

С уважением,

Прадипом

ответ

0

Пожалуйста, обратитесь к Code First - Миграции раздел this article, необходимо создать базу данных Column отмычек, колонка ключей шифрования, схемы и т.д. вне Entity Framework (например, с помощью SQL Server Management Studio). Более подробную информацию об этом можно найти here

+0

Спасибо, я пошел по той же ссылке в этом блоге, что и код миграции Up() успешно выполнен, если ключ CEK уже существует, он работает, когда мы зашифрованы указанным столбцом, иначе это дает исключение. Я работаю с локальной базой данных в SSMS. – pradeep

+1

Да, это должно дать вам исключение, если CEK не существует. Перед выполнением метода Up() вам необходимо будет предоставить CEK –