본문 바로가기

Language/c#

[C#] MySQL(MariaDB) EntityFramework 사용하기

http://퍼온글입니다. 원본은 여기로

그런데... 잘 안됩니다.
Mysql connector가 문제를 일으킵니다.
 
다음의 링크에서 해결했다는데 --> https://ddochea.tistory.com/61
 

[Entity Framework] MySQL 에서 Entity Framework 사용

SQL Server와 달리, MySQL은 미리 구축된 DB를 EntityFramework 모델로 가져오려 할때, 사용불가 메시지나, 가져오려다 죽는 문제가 발생한다. 그래서 꼼수로 MSSQL에 동일한 형태의 테이블을 생성한 뒤, 해

ddochea.tistory.com

저는 잘 안되는 군요..

 

여튼 아래의 내용을 참조하시기 바랍니다. 


 Core 이외에 보통. NET으로 작업을 하면 대부분 MSSQL을 많이 사용합니다. MSSQL사용 시는 별다른 제약사항 없이 편하게 EntityFramework를 이용할 수 있었는데 MySQL로 EntityFramework를 사용하려면 그게 쉽지가 않았습니다.

 

참 좋아졌네요. 작년까지만 해도 이래서 안되는둥 저래서 안되는 둥... 이래야 하고 저래야 하고... 말고 많고 탈도 많았는데 이번에 최신 버전으로 다시 해보니 매끄럽게 진행이 돼서 해당 내용을 같이 살펴보고자 합니다.

 

우선 아래 페이지로 들어가 Development Releases에서 설치파일을 내려받아 설치합니다. 설치하는 과정은 별다른 내용 없이 그냥 일반적인 방법으로 설치하면 됩니다.

 

https://dev.mysql.com/downloads/windows/visualstudio/2.0.html

 

MySQL :: Download MySQL for Visual Studio

Select Operating System: Select Operating System… Microsoft Windows Source Code Select OS Version: All Windows (x86, 32-bit) Windows (x86, 32-bit), MSI Installer 2.0.5 21.4M (mysql-for-visualstudio-2.0.5.msi) MD5: d840f8335bdad276ed0877dc490e727b | Signa

dev.mysql.com

Connector의 최신버전은 20년 06월 현재 8.0.20입니다.

 

https://dev.mysql.com/downloads/connector/net/

 

MySQL :: Download Connector/NET

MySQL Connector/NET 8.0 is highly recommended for use with MySQL Server 8.0, 5.7 and 5.6. Please upgrade to MySQL Connector/NET 8.0.

dev.mysql.com

파일을 내려받고 설치하고 나면 Visual Studio에서 원하는 프로젝트를 생성합니다. 그리고 NuGet Package Manager에서 mysql로 검색한 뒤 MySql.Data와 MySql.Data.EntityFramework를 설치합니다. 특히 MySql.Data는 connector와 동일한 8.0.20입니다.

 

필요한 Package를 설치한 뒤 프로젝트에 ADO.NET Entity Data Model을 추가합니다.

 

다음 단계에서는 New Connection을 클릭합니다.

Change를 눌러 Data Source를 MySQL Database로 변경합니다.

 

MySQL에 관한 접속정보를 설정합니다.

참고로 테스트하려는 DB는 MariaDB이며 test DB에 test Table을 생성한 상태입니다. test Table은 no라는 정수형 단일 Column만 가지고 있으며 키가 설정되어 있습니다.

 

테스트로 생성한 table을 선택하고 Finish 합니다.

 

성공적으로 객체가 생성되었습니다.

 

새로운 데이터를 Insert 합니다.

testEntities te = new testEntities();

var t = new test
{
    no = 100
};

te.test.Add(t);
te.SaveChanges();