개발

[WPF] Entity Framework Core로 SQLite 다루기

텐지니어 2020. 10. 26. 21:01

이번 장은 C#에서 SQLite를 쉽게 사용하는 법을 작성한다. 퇴근 10분 전에 후다닥 작성하는 글이라 정리는 못하니 코드 위주로 참고하자. MSDN에 보면 많은 내용들이 있는데 가장 간단하게 표현해본다. 수업시간에 잠깐 설명해줄까?

(코드 샘플은 글 하단에.)

docs.microsoft.com/ko-kr/ef/core/

 

Entity Framework Core 개요 - EF Core

Entity Framework Core의 일반 소개 개요

docs.microsoft.com

자, 우선 Model을 만들자.

만일 DB에 저장하지 않는 프로퍼티(properties)가 있다면, 해당 프로퍼티에는 [NotMapped]을 어트리뷰트(Attribute)로 추가한다.

 

    public class Blog
    {
        public int BlogId { get; set; }
        public string Title { get; set; }
        public string SubTitle { get; set; }
        public DateTime DateTimeAdd { get; set; }
    }

 

그리고 DbContext를 만들자. (WPF에서 DataContext를 사용해본 친구가 있을 거다. 그것과 유사하다고 이해하면 된다)

 

    public class BloggingContext : DbContext
    {
        public DbSet<Blog> Blogs { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder options)
            => options.UseSqlite("Data Source=TestDatabase.db");
    }

 

첨부한 파일은 콘솔 프로젝트로 만들었는데 WPF도 별반 차이 없다. (컴파일 에러가 하나 나긴 할 건데 데이터베이스를 한 친구라면 금방 알 듯)

 

static void Main(string[] args)
        {
            string dbName = "TestDatabase.db";
            using (var dbContext = new BloggingContext())
            {
                if (File.Exists(dbName)) //파일이 존재하면 읽어
                {
                    foreach (var blog in dbContext.Blogs)
                    {
                        Console.WriteLine($"BlogID={blog.BlogId}\tTitle={blog.Title}\t{blog.SubTitle}\tDateTimeAdd={blog.DateTimeAdd}");
                    }
                }
                else
                {
                    //Ensure database is created
                    dbContext.Database.EnsureCreated();
                    if (!dbContext.Blogs.Any()) //어떤 데이터도 없으면 데이터 넣어서 확인하자
                    {
                        dbContext.Blogs.AddRange(new Blog[]
                            {
                             new Blog{ BlogId=1, Title="Blog 1", SubTitle="Blog 1 subtitle", DateTimeAdd = DateTime.Now },
                             new Blog{ BlogId=2, Title="Blog 2", SubTitle="Blog 2 subtitle" },
                             new Blog{ BlogId=3, Title="Blog 3", SubTitle="Blog 3 subtitle" }
                            });
                        dbContext.SaveChanges();
                    }
                    foreach (var blog in dbContext.Blogs)
                    {
                        Console.WriteLine($"BlogID={blog.BlogId}\tTitle={blog.Title}\t{blog.SubTitle}\tDateTimeAdd={blog.DateTimeAdd}");
                    }
                }

            }
            Console.ReadLine();
        }

 

실행~

 

참 쉽죠? (미안)

 

 

ConsoleApp1.zip
0.01MB