ASP.NET Core에서 SQLite 데이터베이스 생성
새 프로젝트 만들기
dotnet new 명령 에서 새 프로젝트를 만듭니다.
dotnet new web -o CreateDbSample
cd CreateDbSample
SQLite 패키지 추가
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
모델 만들기
Models
폴더를 만들고 Models
폴더에 Product.cs
를 만듭니다. ./Models/Product.cs
namespace CreateDbSample.Models
{
public class Product
{
// ID は自動で主キー
public int ID { get; set; }
public string Name { get; set; }
public int Price { get; set; }
}
}
데이터베이스 컨텍스트 만들기
Models
폴더에 ShopDbContext.cs
를 만듭니다. DbSet<Product>
가 테이블 이미지입니다. ./Models/ShopDbContext.cs
using Microsoft.EntityFrameworkCore;
namespace CreateDbSample.Models
{
public class ShopDbContext : DbContext
{
public ShopDbContext(DbContextOptions options)
: base(options) { }
public DbSet<Product> Products { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) =>
optionsBuilder.UseSqlite("Data Source=shop.db");
}
}
Startup.cs 편집
AddMvc
UseMVC
를 설정합니다. using CreateDbSample.Models;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
namespace CreateDbSample
{
public class Startup
{
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddDbContext<ShopDbContext>();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
app.UseDeveloperExceptionPage();
app.UseMvc();
app.Run(async (context) => await context.Response.WriteAsync("Hello World!"));
}
}
}
데이터베이스 생성
dotnet ef migrations add Initial
Migrations
가 추가되고 그 안에 <timestamp>_initial.cs
가 추가됩니다. using Microsoft.EntityFrameworkCore.Migrations;
namespace CreateDbSample.Migrations
{
public partial class Initial : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Products",
columns: table => new
{
ID = table.Column<int>(nullable: false)
.Annotation("Sqlite:Autoincrement", true),
Name = table.Column<string>(nullable: true),
Price = table.Column<int>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Products", x => x.ID);
});
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Products");
}
}
}
dotnet ef database update
프로젝트의 루트 폴더에
shop.db
가 추가됩니다.웹 API에서 동작 확인
Controllers/productsController.cs
를 작성합니다. using CreateDbSample.Models;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Linq;
namespace CreateDbSample.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ProductsController : ControllerBase
{
ShopDbContext Context { get; set; }
public ProductsController(ShopDbContext context)
{
Context = context;
}
[HttpPost]
public Product AddProduct(Product product)
{
Context.Products.Add(product);
Context.SaveChanges();
return product;
}
[HttpGet]
public IEnumerable<Product> GetProducts() => Context.Products.ToList();
}
}
dotnet run
서버를 시작합니다.POSTMAN에서 작동을 확인합니다.
SQLite 데이터베이스가 실행 중임을 확인했습니다!
Reference
이 문제에 관하여(ASP.NET Core에서 SQLite 데이터베이스 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Nossa/items/9e552c972d215ea5e46b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)