J'exécute le code insert
suivant dans ma fonction Azure dans une base de données Azure SQL Server 2014:
private static void Command(SqlConnection sqlConnection, string query)
{
var sqlCommand = new SqlCommand(query, sqlConnection);
try
{
sqlConnection.Open();
sqlCommand.ExecuteNonQuery();
}
finally
{
sqlConnection?.Close();
}
}
et obtenir l'exception suivante:
System.Data.SqlClient n'est pas pris en charge sur cette plate-forme
Voici les chaînes de dépendances qu'il utilise:
Comment puis-je exécuter une simple commande SQL à partir de mon application? Qu'est-ce que je fais mal?
Si vous n'avez pas besoin de la dernière version stable 4.6.0
, il vous suffit de revenir à 4.5.1
pour fonctionner.
Sinon, la solution consiste à charger les assemblages par nous-mêmes. Cliquez avec le bouton droit sur Function project et Edit <FunctionAppName>.csproj
, ajoutez les éléments ci-dessous pour copier les assemblys associés dans le répertoire de sortie.
<!-- For publish -->
<ItemGroup>
<None Include="$(USERPROFILE)\.nuget\packages\system.data.sqlclient\4.6.0\runtimes\win\lib\netcoreapp2.1\System.Data.SqlClient.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<!-- For local debug -->
<Target Name="CopyToBin" BeforeTargets="Build">
<Copy SourceFiles="$(USERPROFILE)\.nuget\packages\system.data.sqlclient\4.6.0\runtimes\win\lib\netcoreapp2.1\System.Data.SqlClient.dll" DestinationFolder="$(OutputPath)\bin" />
</Target>
Il y a un numéro dépistant le problème de référence de cette assemblée.
Si vous utilisez EF Core, la v2.1.4 semble fonctionner.