dotnet

پلتفرم Net.

(DotNet Platform)

اتصال به دیتابیس‌ها

به صورت کلی، برای اتصال برنامه‌های Net. به دیتابیس‌های مختلف، نیاز به انجام کار خاصی نیست. فقط کافیست تا در ابتدا، پکیج مورد نیاز دیتابیس را نصب کنید، اطلاعات اتصال به آن را وارد کنید و با استفاده از ماژول‌های Entity Framework موجود در NET.، به دیتابیس مدنظر خود متصل شوید. در نظر داشته باشید که برای کار با دیتابیس در برنامه‌های دات‌نت، در ابتدا باید ابزار dotnet-ef و سایر پکیج‌های مربوط به آن را نصب داشته باشید. می‌توانید با اجرای دستورات زیر، این موارد را نصب کنید:

dotnet tool uninstall --global dotnet-ef
dotnet tool install --global dotnet-ef
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package Microsoft.EntityFrameworkCore.Tools

در ادامه، نحوه اتصال به دیتابیس‌های مختلف را بررسی خواهیم کرد.

فهرست عناوین:

MSSQL

برای اتصال به دیتابیس SQL Server در ابتدا باید پکیج Microsoft.EntityFrameworkCore.SqlServer را بر روی پروژه خود نصب کنید؛ می‌توانید این پکیج را با اجرای دستور زیر، نصب کنید:

dotnet add package Microsoft.EntityFrameworkCore.SqlServer

در ادامه، باید در فایل appsettings.json مقدار URI مربوط به دیتابیس MSSQL خود را قرار دهید و عبارت Encrypt=False را حتماً در انتهای URI قرار دهید تا در نهایت اتصال درست باشد؛ به عنوان مثال اگر که مقدار URI دیتابیس MSSQL شما به شرح زیر باشد:

Data Source=etna.liara.cloud,30280;Initial Catalog=myDB;User Id=sa;Password=EJNdMyuBGd8KrCdixJA4DHzS;

سپس، باید مانند قطعه کد زیر، آن را در فایل appsettings.json قرار دهید:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "Production": "Data Source=etna.liara.cloud,30280;Initial Catalog=myDB;User Id=sa;Password=EJNdMyuBGd8KrCdixJA4DHzS; Encrypt=False"
    }
}

اکنون، می‌توانید در فایل Program.cs، به روش زیر، به دیتابیس SQL Server خود متصل شوید:

using Microsoft.EntityFrameworkCore;
using your-project-name.Data;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<your-db-Context>(options =>
  options.UseSqlServer(builder.Configuration.GetConnectionString("Production")));

در نهایت، کافیست که با اجرای دستور زیر، دیتابیس خود را آپدیت کنید:

dotnet ef database update
در نظر داشته باشید که حتماً دستور فوق را در Local و قبل از استقرار برنامه در لیارا، اجرا کنید. برای این‌کار، باید از URI شبکه عمومی دیتابیس، استفاده کنید. پس از اجرای دستور فوق، می‌توانید در فایل appsettings.json مقدار URI شبکه خصوصی را قرار داده و سپس برنامه خود را در لیارا، مستقر کنید.
یک پروژه آماده استقرار در گیت‌هاب لیارا وجود دارد که می‌توانید از آن، استفاده کنید.

PostgreSQL

برای اتصال به دیتابیس Postgres در ابتدا باید پکیج Npgsql.EntityFrameworkCore.PostgreSQL را بر روی پروژه خود نصب کنید؛ می‌توانید این پکیج را با اجرای دستور زیر، نصب کنید:

dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL --version 8.0.2

در ادامه، باید در فایل appsettings.json اطلاعات مربوط به دیتابیس را وارد کنید. در نظر داشته باشید که مقادیر connection string زیر فرضی است و شما بایستی مقادیر مربوط به host و port و password و database را با توجه به اطلاعات دیتابیس‌تان وارد کنید:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "Production": "Host=etna.liara.cloud; Port=31584; Username=root; Password=MGV9V4JyUlRiVlCTZj72Su3U; Database=postgres"
    }
}

اکنون، می‌توانید در فایل Program.cs، به روش زیر، به دیتابیس PostgreSQL خود متصل شوید:

using Microsoft.EntityFrameworkCore;
using your-project-name.Data;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<your-db-Context>(options =>
  options.UseNpgsql(builder.Configuration.GetConnectionString("Production")));

در نهایت، کافیست که با اجرای دستور زیر، دیتابیس خود را آپدیت کنید:

dotnet ef database update
در نظر داشته باشید که حتماً دستور فوق را در Local و قبل از استقرار برنامه در لیارا، اجرا کنید. برای این‌کار، باید از اطلاعات شبکه عمومی دیتابیس، استفاده کنید. پس از اجرای دستور فوق، می‌توانید در فایل appsettings.json مقدار اطلاعات شبکه خصوصی را قرار داده و سپس برنامه خود را در لیارا، مستقر کنید.

MySQL/MariaDB

برای اتصال به دیتابیس MySQL یا MariaDB در ابتدا باید پکیج Pomelo.EntityFrameworkCore.MySql را بر روی پروژه خود نصب کنید؛ می‌توانید این پکیج را با اجرای دستور زیر، نصب کنید:

dotnet add package Pomelo.EntityFrameworkCore.MySql --version 8.0.2

در ادامه، باید در فایل appsettings.json اطلاعات مربوط به دیتابیس را وارد کنید. در نظر داشته باشید که مقادیر connection string زیر فرضی است و شما بایستی مقادیر مربوط به server و port و password و database را با توجه به اطلاعات دیتابیس‌تان وارد کنید:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "Production": "server=etna.liara.cloud; port=34665; user=root; password=H90ZsLcOGp65WSmOnbHYCKsg; database=objective_rubin"
    }
}

اکنون، می‌توانید در فایل Program.cs، به روش زیر، به دیتابیس MariaDB یا MySQL خود متصل شوید:

using Microsoft.EntityFrameworkCore;
using your-project-name.Data;
var builder = WebApplication.CreateBuilder(args);
var connectionString = builder.Configuration.GetConnectionString("Production");
var serverVersion = ServerVersion.AutoDetect(connectionString);
builder.Services.AddDbContext<your-db-Context>(options =>
  options.UseMySql(connectionString, serverVersion));

در نهایت، کافیست که با اجرای دستور زیر، دیتابیس خود را آپدیت کنید:

dotnet ef database update
در نظر داشته باشید که حتماً دستور فوق را در Local و قبل از استقرار برنامه در لیارا، اجرا کنید. برای این‌کار، باید از اطلاعات شبکه عمومی دیتابیس، استفاده کنید. پس از اجرای دستور فوق، می‌توانید در فایل appsettings.json مقدار اطلاعات شبکه خصوصی را قرار داده و سپس برنامه خود را در لیارا، مستقر کنید.

SQLite

استفاده از دیتابیس SQLite در پروژه‌های بزرگ و یا مهم توصیه نمی‌شود؛ اما اگر که یک پروژه کوچک یا موقتی دارید، می‌توانید از این دیتابیس بهره ببرید؛ در ابتدا بایستی پکیج مربوط به آن را با اجرای دستور زیر، نصب کنید:

dotnet add package Microsoft.EntityFrameworkCore.SQLite

در ادامه، باید در فایل appsettings.json اطلاعات مربوط به دیتابیس مثل دایرکتوری و نام آن را وارد کنید؛ به عنوان مثال:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "Production": "Data Source=db/MvcMovieContext-69c678d9-0976-406c-9d44-239ed1395d90.db"
    }
}

سپس، باید دایرکتوری مربوط به دیتابیس را ایجاد کنید تا در حین استقرار، به مشکل نخورد؛ در ادامه نیز، باید قطعه کد زیر را در فایل Program.cs وارد کنید:

using Microsoft.EntityFrameworkCore;
using your-context.Data;
var builder = WebApplication.CreateBuilder(args);
    builder.Services.AddDbContext<your-context>(options =>
        options.UseSqlite(builder.Configuration.GetConnectionString("Production")));

builder.Services.AddControllersWithViews();
var app = builder.Build();

using (var scope = app.Services.CreateScope())
{
    var dbContext = scope.ServiceProvider.GetRequiredService<your-context>();
    dbContext.Database.Migrate();  
}

سپس، در بخش دیسک‌ها در برنامه Net. در لیارا، باید یک دیسک به نام database و اندازه مورد نظرتان ایجاد کنید. و پس از آن یک فایل به نام liara.json در مسیر اصلی پروژه خود، ایجاد کنید و قطعه کد زیر را، درون آن، قرار دهید:

{
    "disks": [
        {
            "name": "database",
            "mountTo": "db"
        }
    ]
}

در نهایت با استفاده از دستور liara deploy، برنامه خود را در لیارا مستقر کنید و به دیتابیس خود متصل شوید.

توضیحات و نکات تکمیلی

قابلیت Connection Pooling

در کدهای ارائه داده شده، قابلیت Connection Pooling به صورت خودکار فعال است و نیازی نیست که شما تنظیمات خاصی را برای آن، انجام دهید. استفاده از Connection Pooling کارایی برنامه را افزایش می‌دهد و تاثیر بسیار زیادی در بهینه‌سازی و کاهش منابع مورد استفاده برنامه و دیتابیس دارد.


متوجه شدم، برو گام بعدی!
;