이번 포스팅에서는 EntityFramework를 통해 localdb에 접속하는 방법에 대해 알아보도록 하겠습니다.
1. locadb에 테이블 생성
1) localdb 위치 확인
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성 sql개체탐색기 클릭](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
보기 => SQL Server 개체 탐색기를 클릭하면 왼쪽 편에 SQL server 개체 탐색기 창이 뜰텐데요.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
여기서 SQL Server를 클릭해보면 현재 visual studio에 연결되어 있는 로컬 서버들이 보일것입니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성 연결된 로컬서버](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
2) DB 생성
두 서버 중 원하는 곳에 DB를 생성하면 됩니다.
우선 서버 하위에 있는 데이터베이스 폴더를 마우스 오른쪽 클릭합니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
새 데이터베이스 추가를 누릅니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
원하는 이름으로 데이터베이스 이름을 적습니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
확인을 누르면 정상적으로 DB가 생성됩니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
3) 테이블 구성 및 생성
DB를 생성했으니 그 안에 테이블을 추가해볼 차례 입니다.
DB하위에 있는 테이블 폴더를 마우스 오른쪽 클릭하고, 새 테이블 추가를 누릅니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성](https://blog.kakaocdn.net/dn/H8mOi/btrHFRmgVOj/0iOeonkAD5xKR53aIhzOXk/img.png)
아래와 같이 테이블을 구성할수 있는 창이 뜹니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성](https://blog.kakaocdn.net/dn/bENcKF/btrHFQt80Op/TQs1uJ2eFPxA9qLgcWBEKK/img.png)
이곳에서 원하는 컬럼명과 타입을 지정해줍니다. 그리고 null 허용 여부도 결정해줍니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성](https://blog.kakaocdn.net/dn/now1M/btrHEYFWG0G/Pkyy3S3hKMtO1PaWPsUXS1/img.png)
참고로 해당 내역을 작성하면 아래 있는 디자인 부분에 그에 상응하는 쿼리문이 자동으로 생성되는 것을 알 수 있습니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성](https://blog.kakaocdn.net/dn/VCxMt/btrHFQOrsev/vzppxy0OaXMTWedof3KQZk/img.png)
작성이 완료되면 업데이트를 눌러줍니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성](https://blog.kakaocdn.net/dn/t1jyK/btrHAIrkEEa/FPtmeuP95CE8p0MsWwMEyk/img.png)
팝업창이 뜨면 데이터베이스 업데이트 버튼을 눌러줍니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성](https://blog.kakaocdn.net/dn/x2viu/btrHFP24hBr/QeTqkIFi8VQMj8kyru9ZTK/img.png)
완료 후 TestDB아래에 dbo.Table이라는 테이블이 생성된 걸 볼 수 있을겁니다.
여기서 dbo는 디폴트로 붙는 prefix이고 .Table은 디폴트로 생성되는 테이블 명입니다.
테이블명을 Users로 변경하겠습니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 1. locadb에 테이블 생성](https://blog.kakaocdn.net/dn/62eJS/btrHFIbDh5e/yZvJtS8RgWYzDp1XfIZAkk/img.png)
2. EntityFramework 연결
1) Nuget Pacakage 다운로드
종속성 위에서 마우스 오른쪽을 클릭하고 NuGet 패키지 관리를 클릭합니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결](https://blog.kakaocdn.net/dn/btNBpV/btrHuSN6Jj9/0o9MQRK9ptXjAoJyfNv3d0/img.png)
검색창에 entityframework를 검색한 후, EntityFrameworkCore와 SqlServer를 다운로드 합니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결](https://blog.kakaocdn.net/dn/1nhAo/btrHFQVdBlO/6GrvFBX72HguI7LdFCMNnK/img.png)
2) DbContext를 상속받은 클래스 생성
EntityFramework를 이용한 데이터 관리를 위한 클래스를 생성합니다.
이때 클래스는 DbContext라는 것을 상속받는 형태입니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결](https://blog.kakaocdn.net/dn/bVLygu/btrHCX2jDTZ/88qIFkABoElPtMuxu2t8wk/img.png)
현재 빨간줄이 뜨는건 관련 네임스페이스가 없기 때문인데요.
ctrl+. 을 눌러서 namespace를 추가 해주면 빨간줄이 사라집니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결](https://blog.kakaocdn.net/dn/baAdP6/btrHHkoc7jY/FVqdn23Yy4LbQ36tlUjGVK/img.png)
이어서 테이블에서 지정한 컬럼명과, 타입이 일치하는 프러퍼티를 가지는 클래스를 생성합니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결](https://blog.kakaocdn.net/dn/bE1nWV/btrHEebdSO7/K29XPxHtAKVsNLvKd7Hfd1/img.png)
컬럼명이 다르거나 타입이 일치 하지 않으면 오류가 발생하니 주의 하기 바랍니다.
참고로 c#에는 varchar가 없으니 string으로 대체 합니다.
다시 TestDbContext로 돌아와서 앞서 만든 User클래스를 DbSet안에 넣은 형태의 프러퍼티를 정의합니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결](https://blog.kakaocdn.net/dn/kFPaD/btrHBBlcd2X/LA3I59gtGk2lEf47ugiQpK/img.png)
Dbset의 이름은 DB명과 일치하기를 권장합니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결](https://blog.kakaocdn.net/dn/bx86to/btrHHk9AAqn/BND2AN5aB7hdGIf447J630/img.png)
다음으로 할 부분은 DB와 연결하는 작업입니다.
3) DB와 연결
아래와 같이 config.. 까지 적어주면 자동으로 생성되는 메소드가 보이실텐데요.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결](https://blog.kakaocdn.net/dn/bhlBB7/btrHEe3kWia/k57v3zLsTcuDEVlpHwHcfK/img.png)
해당 부분을 클릭해서 생성해줍니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결](https://blog.kakaocdn.net/dn/cmo6V5/btrHDdDTCTu/FCYdPZBCo1DB1OlnRclMi1/img.png)
DB와 연결 시켜주기 위해 메소드를 조금 수정해보겠습니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결](https://blog.kakaocdn.net/dn/UGRrq/btrHDA6D4RW/2x6xH8IZ4Y47bJinIKT2i1/img.png)
UseSqlServer() 메서드가 우리가 사용할 함수 입니다. 해당함수의 인자로는 connectionString 값이 들어갑니다.
우리 DB의 connectionString 은 무엇일까요?
연결한 데이터베이스 마우스 오른쪽 클릭 후 속성을 누르면,
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결](https://blog.kakaocdn.net/dn/Tg7MH/btrHFQVdQEW/KMqSZcyjDIoxAgMOzmCz61/img.png)
오른쪽 하단에 속성창이 뜹니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결](https://blog.kakaocdn.net/dn/btyb6c/btrHEd4sFWo/tr6YK6f2rBp3lbGPKMEyK0/img.png)
해당 부분을 복사해서,
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결](https://blog.kakaocdn.net/dn/br4pIs/btrHBzVgd5W/olO0G8ljPbEzrke8n4baVk/img.png)
인자로 넣어주면 됩니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결](https://blog.kakaocdn.net/dn/bnLaqQ/btrHDAewUIU/fgErtsnO7Bzl4JqDh5lqR1/img.png)
이때 \(백슬래시)가 들어간 부분때문에 에러가 뜰 수 있으니 앞에 @를 추가해줍니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결](https://blog.kakaocdn.net/dn/cw0Bf4/btrHEdDnD7a/0Nb8GGm7kza4PckrW2NNP1/img.png)
이제 Db를 연결할준비가 끝났습니다.
실제로 DB에 있는 데이터를 읽어보겠습니다.
4) DB에 랜덤값 넣기
현재 DB에 데이터가 없기 때문에 임의의 값들을 먼저 채워볼게요.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결](https://blog.kakaocdn.net/dn/DTGhk/btrHBBrXcc2/jkFCRpxF6oGbmcEby0Srf1/img.png)
5) DB값 출력
//Program.cs
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결](https://blog.kakaocdn.net/dn/GsEZQ/btrHDQacolY/FmTylkxN0Xi00ZnZ03HZGk/img.png)
TestDbContext를 객체화하고 Dbset의 이름인 Users를 가져와 사용합니다.
그 후 추가적으로 List로 타입 변환을 해주었는데요.
ToList()로 변환을 하지 않아도 가능은 하나, 더욱 확장성 있는 쿼리를 작성하기 위해선 일반적으로 ToList()로 변환한다는것을 참고하기 바랍니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결](https://blog.kakaocdn.net/dn/IlodG/btrHBAT71tS/QpfuVb2dKu6aaBtNZddob0/img.png)
output:
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결](https://blog.kakaocdn.net/dn/rTjds/btrHDbTz132/mnr9WfKjk9Kl6X9z6krUK1/img.png)
아래와 같이 using을 쓰지 않아도 정상작동하지만 메모리 효율성을 위해 위와 같이 using을 감싼 형태로 작성하였습니다.
![[c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결 [c#] localdb에 EntityFramework 연결 하는 방법 - undefined - 2. EntityFramework 연결](https://blog.kakaocdn.net/dn/exPwX9/btrHEYTwlI8/zkCks4w5cvYkQoMTdNkCc1/img.png)
'c#' 카테고리의 다른 글
[c#] 의존성 주입(dependency Injection) 이란? (2) | 2022.08.10 |
---|---|
[c#] Insert, Update, Delete 하는법 with EntityFramework (0) | 2022.07.21 |
[c#] LINQ First vs Single | FirstOrDefault vs SingleOrDefault 차이 (0) | 2022.07.15 |
[c#] SQL in / not in 기능을 LINQ로 구현 (0) | 2022.07.15 |
[c#] 양수일때 + 넣기 (using String.Format) (0) | 2022.07.14 |
댓글
꼬예님의
글이 좋았다면 응원을 보내주세요!
이 글이 도움이 됐다면, 응원 댓글을 써보세요. 블로거에게 지급되는 응원금은 새로운 창작의 큰 힘이 됩니다.
응원 댓글은 만 14세 이상 카카오계정 이용자라면 누구나 편하게 작성, 결제할 수 있습니다.
글 본문, 댓글 목록 등을 통해 응원한 팬과 응원 댓글, 응원금을 강조해 보여줍니다.
응원금은 앱에서는 인앱결제, 웹에서는 카카오페이 및 신용카드로 결제할 수 있습니다.