.NET

Azure Cosmos DB: วิธีการเชื่อมต่อ .NET Application เข้ากับฐานข้อมูล

เรื่องที่เกี่ยวข้อง - .NET, Azure Cosmos DB

Azure Cosmos DB เป็นหนึ่งในบริการฐานข้อมูลแบบ Ready-to-scale ของ Microsoft ช่วงต้นเดือนที่ผ่านมานี้ มีโอกาสได้เข้าไปจับส่วนการเชื่อมต่อ (พลยังเขียนโค้ดอยู่น้า)

เห็นว่ามันสะดวกดี เลยมาเขียนเพื่อเป็นประโยชน์สำหรับคนต้องการจะเริ่มต้นครับ ทำตามได้ง่ายๆ เลย

ใครจะลองทำตาม ให้ทำการติดตั้ง .NET SDK ไว้ในเครื่องให้เรียบร้อยก่อนด้วยนะ

1. สร้าง Azure Cosmos DB Resource

เริ่มจากไปที่ Azure Portal แล้ว sign -in ให้เรียบร้อย (ใครยังไม่มี Azure Account สมัครฟรีที่นี่)

จากนั้นพอเข้ามาที่ portal เห็นแบบภาพด้านล่าง ให้กดปุ่ม Create a resource

จากหน้า Marketplace แบบด้านล่าง > ค้นหา Azure Cosmos DB ในช่องค้นหา > และกด Create Azure Cosmos DB

จากภาพด้านล่างนั้น ให้กดปุ่มเลือก NoSQL API (ในกรณีอื่นๆ สามารถเลือกได้ตามความต้องการ แต่การเขียนโค้ดจัดการข้อมูลก็จะแตกต่างกัน)

และจากภาพด้านล่าง ก็ให้กรอกข้อมูลที่จำเป็นในการสร้าง Cosmos DB Resource ครับ

  1. เลือก Subscription ที่เราต้องการ และ Resource group (สร้างใหม่ได้ถ้าจำเป็น)
  2. กำหนดชื่อ resource, location, ส่วน capacity mode ในที่นี้จะเลือก Provisioned throughput เพื่อที่จะเลือกการทำงานแบบ Free Tier
  3. เลือกเปิด Apply Free Tier Discount และ Limit total account throughput (หากเป็น production ก็สามารถเลือกไม่เอา Discount ก็ได้)
  4. กดปุ่ม Review + create และกดปุ่ม create ซ้ำเพื่อเริ่มการ provision ตัว Cosmos DB

หลังจากสร้างเสร็จแล้ว ให้เข้าไปที่ Cosmos DB Resource และทำตามภาพขั้นตอนด้านล่าง

  1. ค้นหาเมนูชื่อ Keys (จริงๆ เมนูนี้จะอยู่ในส่วนของ Setting > Keys)
  2. กดเลือกเมนู
  3. copy Primary Connection String เอาไว้

2. สร้าง .NET แอพพลิเคชั่นเพื่อเชื่อมต่อกับ Azure Cosmos DB

2.1 สร้างโปรเจค .NET console

เปิด Windows Terminal บน Windows หรือ Terminal บน MacOS

จากนั้นรันคำสั่ง

dotnet new console -n cosmos-console

จากนั้น ให้ติดตั้ง Package เพิ่มเติม โดยรันคำสั่งด้านล่างต่อไปนี้ทีละคำสั่ง

cd cosmos-console
dotnet add package Microsoft.Azure.Cosmos
dotnet add Microsoft.Extensions.Configuration
dotnet add Microsoft.Extensions.Configuration.Json

2.2 สร้างและเรียกใช้งาน Configuration

จากนั้นให้สร้างไฟล์ชื่อ appsettings.json ไว้ใน Directory ของ Project และใส่ข้อมูลลงไปใฟล์

{
    "CosmosDB": {
        "ConnectionString":"ส่วนนี้ให้เอา Connection string ของ CosmosDB ที่ได้มาจากขั้นตอนที่แล้ว มาใส่",
        "DatabaseId":"db",
        "ContainerId":"items",
        "PartitionKeyPath":"/id"
    }
}

เสร็จแล้วให้เปิดไฟล์ cosmos-console.csproj ที่อยู่ใน Directory ของ Project และเพิ่มส่วนด้านล่างเข้าไปดังตัวอย่างด้านล่าง

<Project Sdk="Microsoft.NET.Sdk">

  ... ของเดิมที่มีอยู่ในไฟล์

  <ItemGroup>
    <None Update="appsettings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>

</Project>

3. เชื่อมต่อและสร้าง item ลง Cosmos DB

เปิดไฟล์ Program.cs และเขียนโค้ดด้านล่างลงไป

// Type: C#
using System.Text.Json.Serialization;
using Microsoft.Azure.Cosmos;
using Microsoft.Extensions.Configuration;

// ทำการอ่านไฟล์ appsettings.json
var configuration = new ConfigurationBuilder().AddJsonFile($"appsettings.json");
var config = configuration.Build();

// ดึงค่า configuration จาก appsettings.json
string connectionString = config["CosmosDB:ConnectionString"];
string databaseId = config["CosmosDB:DatabaseId"];
string containerId = config["CosmosDB:ContainerId"];
string partitionKeyPath = config["CosmosDB:PartitionKeyPath"];

// เชื่อมต่อ Cosmos DB ด้วย Connection String
CosmosClient client = new CosmosClient(connectionString);

// สร้าง database ด้วย Id ที่กำหนด
Database database = await client.CreateDatabaseIfNotExistsAsync(databaseId);

// สร้าง container ด้วย Id ที่กำหนด พร้อมกำหนดว่า property ไหนจะเป็น partition key
Container container = await database.CreateContainerIfNotExistsAsync(containerId, partitionKeyPath);


// สร้าง object ของ Product record และส่งข้อมูลไปยัง Cosmos DB
Product product = new(
    Guid.NewGuid().ToString(),
    "Test"
);

// ส่งข้อมูลไปยัง Cosmos DB และกำหนด partition key ด้วย Id ของ object
var createItemResponse = await container.CreateItemAsync<Product>(product, new PartitionKey(product.id));


// ประกาศ Product record เพื่อเก็บข้อมูลที่จะส่งไปยัง Cosmos DB
public record Product
(
     string id ,
     string title
);

ทำการบันทึกไฟล์ และรันคำสั่งด้านล่างใน directory ของโปรเจค ผ่านโปรแกรม Terminal

dotnet run 

หากทำงานได้ไม่มีปัญหา เราสามารถใช้ Data Explorer ที่อยู่บน Azure Cosmos DB เปิดดูข้อมูลได้ตามภาพด้านล่าง

  1. เปิด Data Explorer ที่อยู่ใน Cosmos DB
  2. สังเกตดูในส่วนของ Database และ Container ที่ถูกสร้างขึ้นมาตาม Id รวมถึง item ที่อยู่ด้านใน
  3. กดดูรายการของ document ที่อยู่ใน container
  4. รายละเอียดของ Document ที่เราใช้โค้ดใน .NET ใส่เข้ามา

เริ่มต้นยุค AI ด้วยคอร์สฟรี และพรีเมี่ยม กับพล

หากชอบสิ่งที่พลเล่า เรื่องที่พลสอน สามารถสนับสนุนพลโดยการเข้าเรียนคอร์สออนไลน์ของพลนะคร้าบ

  • เข้าใจง่าย ใช้ได้จริง ออกแบบการสอนอย่างเข้าใจโดยโค้ชพล
  • มีคอร์สสำหรับคนใช้งานทั่วไป จนถึงเรียนรู้เพื่อใช้งานในสายอาชีพขั้นสูง
  • ทุกคอร์สมีใบประกาศณียบัตรรับรองหลังเรียนจบ

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

Allow All
Manage Consent Preferences
  • Always Active

Save