3 min read

C# Entity Framework(EF) Mysql 간단 사용하기

대부분의 언어에서는 각자에 대표적인 ORM이 있는데 C#에서는 일명 EF에서 만든 공식 ORM이 있다.

간단하게 콘솔 프로젝트을 NET Framework 4.6.1 이상만든다.

먼저 해야할일은 EF SDK를 받아야 하므로 아래와 같이 콘솔 매니저를 클릭해준다.

그러면 nuget을 콘솔로 받을수 있는 명령어 창이 출력이 되게 된다.

여기서 Nuget의 다운로드 패키지를 명령어로 받을수 있는데 아래와 같이 쳐준다

Install-Package Microsoft.EntityFrameworkCore.SqlServer
Install-Package Microsoft.EntityFrameworkCore.Tools

여기서 많은 데이터베이스들이 있는데 mysql을 사용할 목적이라 아래와 같이 입력한다.

install-package Pomelo.EntityFrameworkCore.MySql

물론 다양한 데이터베이스를 제공하고 이는
https://docs.microsoft.com/ko-kr/ef/core/providers/index 여기서 확인할수 있다.

그후 model.cs를 만든후 아래와 같이 입력을 해주자

using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace ConsoleApp3
{
    public class TodoContext: DbContext
    {
        public DbSet<Todo> Todo{ get; set; }
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseMySql(@"Server=192.168.10.3;Database=ef;User=User;Password=Password");
        }
    }

    public class Todo
    {
        public int id { get; set; }
        public string status { get; set; }
        public string context { get; set; }
        public string DoneAt { get; set; }
    }
}

간단한 모델을 만들고. 아까 PMC(패키지 다운로드 콘솔)에 다음과 같이 입력을 해주자

Add-Migration InitialCreate
Update-Database

add-Migration은 해당 폴더의 텍스트를 조회해서 DB쪽 model이면 migraions 폴더에 초기 테이블을 명세서를 아래와 같이 만들어준다.

update-Database는 실제 서버의 데이터베이스를 초기화 해주는 역할을 해준다.

한번 데이터베이스에 접속해서 해당 테이블이 있는지 확인해보자. 아래처럼 생성된걸 쉽게 확인할수 있다.

간단하게 데이터베이스를 저장후 조회하는 코드를 작성해보자.

맨처음 프로젝트를 만들때 만들어지는 Program.cs에 다음과 같이 입력을 해주자

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var db = new TodoContext())
            {
                db.Todo.Add(new Todo { title = "hello...." });
                var count = db.SaveChanges();
                Console.WriteLine("{0} records saved to database", count);

                Console.WriteLine();
                Console.WriteLine("All blogs in database:");
                foreach (var blog in db.Todo)
                {
                    Console.WriteLine(" - {0}", blog.title);
                }
            }
        }
    }
}

기존 mysql.Data로 직접 모델링 하는거에 비해 조회 삽입 전부 간단히 해결할수 있다.

자세한 것은 다음 MS 링크를 참조해보자

https://docs.microsoft.com/ko-kr/ef/