0

Comment transmettre des paramètres à une procédure stockée qui renvoie plusieurs enregistrements à l'aide de la procédure stockée EF6 - DbContext avec SQL Server 2016 ayant des colonnes cryptées?Comment transmettre des paramètres à une procédure stockée qui renvoie plusieurs enregistrements

utilisant EF 6.1.3, SQL Server 2016 - AlwaysEncrypted (déterministe)

Il y a un few articles qui parlent de l'utilisation d'ADO .NET 4.6 pour ce faire en utilisant la commande, les objets de paramètres, mais je ne pouvais pas trouver un façon de le faire à partir de mon EF DbContext.

Répondre

0
//make sure to provide the actual datatype and size on the parameter 
//you can use reflection on the entity to dynamically get/set the property info by a common function. 

var paratmeterNames = new StringBuilder(); 
string paratmeterNamesUpdated = null; 

if (lastName != null) 
{ 
    var lastNameParam = new SqlParameter("@lastName", SqlDbType.VarChar, 60) {Value = lastName}; 
    parameterList.Add(lastNameParam); 
    paratmeterNames.Append("@lastName,"); 
} 

if (firstName != null) 
{ 
    var firstNameParameter = new SqlParameter("@firstName", SqlDbType.VarChar, 30) {Value = firstName}; 
    parameterList.Add(firstNameParameter); 
    paratmeterNames.Append("@firstName,"); 
} 

if (paratmeterNames != null && paratmeterNames.Length > 0) 
{ 
    paratmeterNamesUpdated = paratmeterNames.ToString().TrimEnd(','); 
} 

var result = _context.Database.SqlQuery<T>("exec sp_name " + paratmeterNamesUpdated, parameterList.ToArray()).ToList(); 

//this will make below **calls to SQL DB:** 
//exec sp_describe_parameter_encryption N'exec sp_name @lastName,@firstName',N'@lastName varchar(60),@firstName varchar(30)' 
//exec sp_executesql N'exec sp_name @lastName,@firstName',N'@lastName varchar(60),@firstName varchar(30)',@lastName=0x01A2256C34F97,@firstName=0x018EE4BD11BA7