web-dev-qa-db-fra.com

Fonction Azure - System.Data.SqlClient n'est pas pris en charge sur cette plateforme.

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:

 enter image description here

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. 

5
Jerry Liu

Si vous utilisez EF Core, la v2.1.4 semble fonctionner.

0
Mike Dean