Как вставить и выбрать зашифрованный столбец из SQL в asp.net ядро

#sql #sql-server #asp.net-core #encryption #azure-keyvault

#sql #sql-сервер #asp.net-ядро #шифрование #azure-keyvault

Вопрос:

Я использую SQL в качестве базы данных. Зашифруйте некоторый столбец таблицы с помощью Azure Key Vault. Теперь я хочу вставить и выбрать данные из asp.net ядро. Я также добавляю «Параметр шифрования столбца = включен» в мою строку подключения.

Но я получаю следующую ошибку при попытке вставить данные из asp.net ядро.

«Типы данных nvarchar(600), зашифрованные с помощью (encryption_type = ‘RANDOMIZED’, encryption_algorithm_name = ‘AEAD_AES_256_CBC_HMAC_SHA_256’, column_encryption_key_name = ‘CEK_Auto2’, column_encryption_key_database_name = ‘DB’) и nvarchar, несовместимы в операторе equal to».

Вот код для справки

 var s = configuration.GetSection("ConnectionString").GetSection("_ConnectionString").Value;
using (var sqlConnection = new SqlConnection(s))
{
 using (var command = sqlConnection.CreateCommand())
 {
 command.CommandType = System.Data.CommandType.StoredProcedure;
 command.CommandText = "_Insert_Update_Customer_Bank_Details";
 sqlConnection.Open();
 command.Parameters.Add(new SqlParameter("@Id", bank_Account_Customer_Entity.Customer_Bank_Detail_Id));
 command.Parameters.Add(new SqlParameter("@cust_contact_id", bank_Account_Customer_Entity.Cust_Contact_Id));
 command.Parameters.Add(new SqlParameter("@Customer_Id", bank_Account_Customer_Entity.Customer_Id));
 command.Parameters.Add(new SqlParameter("@User_Id", bank_Account_Customer_Entity.UserId));
 command.Parameters.Add(new SqlParameter("@Name_On_Account", bank_Account_Customer_Entity.Name_On_Account));
 command.Parameters.Add(new SqlParameter("@Account_Number", bank_Account_Customer_Entity.Account_Number));
 command.Parameters.Add(new SqlParameter("@Bank_Name", bank_Account_Customer_Entity.Bank_Name));
 command.Parameters.Add(new SqlParameter("@Bank_Routing_Number", bank_Account_Customer_Entity.Bank_Routing_Number));
 command.Parameters.Add(new SqlParameter("@Bank_Account_Type", bank_Account_Customer_Entity.BankAccountType));
 command.Parameters.Add(new SqlParameter("@Bank_Reg_Mobile", bank_Account_Customer_Entity.Bank_Regestered_Mobile));
 command.Parameters.Add(new SqlParameter("@Bank_Reg_Email", bank_Account_Customer_Entity.Bank_Regestered_Email));
 command.Parameters.Add(new SqlParameter("@Login_User_Id", bank_Account_Customer_Entity.Created_By));
 command.Parameters.Add(new SqlParameter("@Mode", bank_Account_Customer_Entity.Mode));
 command.Parameters.Add(new SqlParameter("@Federal_tax_id", bank_Account_Customer_Entity.FTax));
//add fedral tax
command.Parameters.Add(new SqlParameter("@MESSAGE_ID", SqlDbType.Int));
command.Parameters["@MESSAGE_ID"].Direction = ParameterDirection.Output;
command.Parameters.Add(new SqlParameter("@MESSAGE", SqlDbType.VarChar, 5000));
command.Parameters["@MESSAGE"].Direction = ParameterDirection.Output;
command.Parameters.Add(new SqlParameter("@Primary_Out_Id", SqlDbType.BigInt));
command.Parameters["@Primary_Out_Id"].Direction = ParameterDirection.Output;
int i = command.ExecuteNonQuery();
}
}
 

Кто-нибудь может мне помочь?

Вот дизайн базы данных для моей таблицы. Я хочу, чтобы 4 столбца были зашифрованы, это: Name_On_Account , Account_Number , Bank_Name , Bank_Routing_Number .

Дизайн таблицы:

дизайн таблицы

Комментарии:

1. Не могли бы вы также опубликовать определение таблицы?

2. Код выполнен правильно. Ref:docs.microsoft.com/en-us/azure/azure-sql/database /. … Просто из сообщения об ошибке видно, что данные не соответствуют длине типа данных таблицы.

3. @KalyanChanumolu-MSFT@Leon Yue Я добавил дизайн таблицы в свой вопрос. Спасибо за ваш ответ