Hướng dẫn

[Azure] Azure SQL bindings for Azure Functions

How to set environment variables for use with an Azure Function - Azure Greg

Hôm bữa tình cờ lướt vòng vòng thì mình vô tình phát hiện là Microsoft có cập nhật một tính năng mới cũng khá là thú vị cho Azure Functions được giới thiệu từ hồi cuối năm 2021, đó là Azure SQL bindings. Nên hôm nay nhân dịp đầu năm mới, mình xin phép “khai máy” viết một bài blog để chia sẻ với mọi người về chủ đề này.

Azure Functions là một serverless application nên nào giờ trong 1 function chúng ta thường sẽ truyền dữ liệu đầu vào và với dữ liệu đầu ra, nếu chúng ta muốn lưu xuống database thì chúng ta sẽ gọi tới 1 service hay 1 activity nào đó rồi thực hiện việc thao tác với database ở trong đó chứ ko thực hiện trực tiếp trong function.

Nhưng nay, mọi thứ đã thay đổi… thao tác trực tiếp với database từ trong Azure Function đã có thể thực hiện được!!! *vỗ tay bẹp bẹp chẹp chẹp*

Đọc dữ liệu từ database (Input binding)

Đối với trường hợp đọc dữ liệu từ database, chúng ta chỉ việc truyền thêm param vào với cú pháp là

[Sql(“{câu query}”, CommandType = System.Data.CommandType.Text, Parameters = “{các param}”, ConnectionStringSetting = "SqlConnectionString")]

Ví dụ:

public static class GetToDoItem
    {
        [FunctionName("GetToDoItem")]
        public static IActionResult Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "gettodoitem")]
            HttpRequest req,
            [Sql("select * from dbo.ToDo where Id = @Id",
                CommandType = System.Data.CommandType.Text,
                Parameters = "@Id={Query.id}",
                ConnectionStringSetting = "SqlConnectionString")]
            IEnumerable<ToDoItem> toDoItem)
        {
            return new OkObjectResult(toDoItem.FirstOrDefault());
        }
    }

Lưu dữ liệu vào database (Output binding)

Còn đối với trường hợp cần lưu dữ liệu vào, ta sẽ truyền param với cú pháp như sau

[Sql("{tên bảng}", ConnectionStringSetting = "SqlConnectionString")] out {object class} newItem

Ví dụ:

public static class WriteOneRecord
    {
        [FunctionName("WriteOneRecord")]
        public static IActionResult Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", Route = "addtodo")] HttpRequest req,
            ILogger log,
            [Sql("dbo.ToDo", ConnectionStringSetting = "SqlConnectionString")] out ToDoItem newItem)
        {
            newItem = new ToDoItem
            {
                Id = req.Query["id"],
                Description =req.Query["desc"]
            };

            log.LogInformation($"C# HTTP trigger function inserted one row");
            return new CreatedResult($"/api/addtodo", newItem);
        }
    }

Trong bài viết này, mình dùng ngôn ngữ C# để ví dụ. Các bạn có thể tham khảo thêm thông tin cụ thể cũng như cách dùng trong các ngôn ngữ khác tại đây

1 bình luận về “[Azure] Azure SQL bindings for Azure Functions

Bình luận về bài viết này