Azure Function与SQL Azure数据库集成

在本文中,将探讨一个有趣的话题,即如何在每次收到请求时将记录插入到SQL Azure数据库中。为此,假设已经有一个运行中的Azure SQL数据库,并且已经创建了一个函数应用。

前提条件

首先,需要在Azure门户中创建一个Azure SQL数据库。然后,创建一个名为LogRequest的表,该表包含两列:Id [PK, int, identity]Log [nvarchar(max)]。使用了Visual Studio 2015社区版来连接到SQL数据库并创建了这个新表。

函数代码和数据库配置

点击“新建函数”,然后选择“HttpTrigger – C#”,将函数命名为“HttpTriggerSqlDatabase”,这样便于定位。一旦获得了默认的代码视图,找到代码文本框底部的小链接“查看文件”。点击“+”号添加新文件,将文件命名为“project.json”。将使用这个文件来添加所有必需的nuget包。

复制并粘贴以下json内容并保存:

{ "frameworks": { "net46": { "dependencies": { "Dapper": "1.42.0", "System.Data.SqlClient": "4.1.0", "Microsoft.WindowsAzure.ConfigurationManager": "3.2.1" } } } }

应该开始看到日志正在恢复所有缺失的nuget包,然后编译代码。将数据库连接字符串关联到函数应用。为此,点击顶部链接“函数应用设置”,然后点击按钮“转到应用服务设置”。这将打开函数应用设置页面,然后点击数据内容,添加。

一旦成功添加了一个名为“SqlConnection”的连接,关闭视图并使用面包屑导航回到函数。点击函数“HttpTriggerSqlDatabase”,复制下面的代码片段。

using System.Net; using Dapper; using System.Data.SqlClient; using System.Configuration; public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log) { log.Info($"C# HTTP trigger function processed a request. RequestUri={req.RequestUri}"); var successful = true; try { var cnnString = ConfigurationManager.ConnectionStrings["SqlConnection"].ConnectionString; using (var connection = new SqlConnection(cnnString)) { connection.Open(); var rLog = await req.Content.ReadAsAsync<LogRequest>(); // insert a log to the database // NOTE: Execute is an extension method from Dapper library connection.Execute("INSERT INTO [dbo].[LogRequest] ([Log]) VALUES (@Log)", rLog); log.Info("Log added to database successfully!"); } } catch { successful = false; } return !successful ? req.CreateResponse(HttpStatusCode.BadRequest, "Unable to process your request!") : req.CreateResponse(HttpStatusCode.OK, "Data saved successfully!"); } public class LogRequest { public int Id { get; set; } public string Log { get; set; } }

现在保存代码,并确保日志显示函数编译成功。

测试函数

滚动到页面的“运行”部分,可以调用API。使用了LinqPad从数据库中检索记录,以验证数据是否确实成功保存。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485