Azure関数内で次のinsert
コードを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();
}
}
次の例外が発生します:
System.Data.SqlClientはこのプラットフォームではサポートされていません
ここでは、使用している依存関係のチェーンを示します。
アプリから簡単なSQLコマンドを実行するにはどうすればよいですか?何が悪いのですか?
最新の安定版4.6.0
が必要ない場合は、4.5.1
に戻すだけで十分です。
それ以外の場合の回避策は、アセンブリを自分でロードすることです。 Functionプロジェクトを右クリックし、Edit <FunctionAppName>.csproj
の下に項目を追加して、関連するアセンブリを出力ディレクトリにコピーします。
<!-- 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>
このアセンブリ参照の問題を追跡する issue があります。
System.Data.SqlClientを4.6.0にダウングレードしましたが、それでうまくいきました
どういうわけか、.NET Core 3.0.0を使用するように構成されたAzure Functionsインスタンスでこれに遭遇しました。構成設定を変更しましたFUNCTIONS_EXTENSION_VERSION
beta
から~2
。再起動すると、2.0.xを使用するようになり、このエラーはなくなりました。
EF Coreを使用している場合、v2.1.4が機能するようです。
私の場合、AzureのFunctionAppのFunctionAppSettingsでランタイムバージョン3を2に変更することでこれを解決しました