본문 바로가기
개발/Database

Entity Framework에서 MySQL 접속하기

by ispie 2019. 1. 23.

0. Install-Package EntityFramework


Entity Framework가 인스톨 되어 있지 않았을 경우엔 EntityFramework 6.0 을 설치합니다.

 

1. MySQL for Visual Studio를 설치

「mysql-for-visualstudio-2.0.5.msi」

Download MySQL for Visual Studio
https://dev.mysql.com/downloads/windows/visualstudio/2.0.html


2. MySQL connector를 설치

「mysql-connector-net-6.9.11.msi」

다운로드 미러
http://mirror.cogentco.com/pub/mysql/MySQLInstaller/

 


3. NuGet 패키지 관리에서 MySql.Data, MySql.Data.Entity, MySql.Web을 설치

 

Nuget 패키지 설치시에는 확실한 버젼 관리를 위해 Package Manager Console를 사용해서 인스톨 합니다.

  • MySql.Data 6.9.11
  • MySql.Data.Entity 6.9.11
  • MySql.Web 6.9.11

 

Windows 10 & Visual Studio 2017 조합의 경우엔 버젼이 모두 일치하지 않으면 Entity Framework의 Data Wizard가 정상적으로 동작하지 않습니다.

 

DB접속시에 설정창이 갑자기 닫히는 오류 발생한다면 MySQL connector와 MySql.Data, MySql.Data.Entity, MySql.Web의 버젼 중에 어느 하나가 다를 가능성이 있으므로 버젼을 확인해서 모두 같은 버젼이 설치되도록 해 줍니다.

그렇기 때문에 여러명이서 프로젝트를 수행하는 경우엔 사전에 팀 전원의 MySQL Connector 버젼을 일치시킬 필요가 있습니다.

또한 오래전에 개발하고 간만에 손볼 필요가 있는 프로젝트의 DB요소를 변경하고 싶을 경우엔 개발하고 있는 PC의 MySQL Connector 버젼에 맞춰서 패키지들을 갱신해 줄 필요가 있습니다.(반드시 Package Manager Console에서 버젼을 지정해서 갱신합니다)


버젼 불일치시의 DB접속 오류에 대한 자세한 내용은 아래 사이트를 참고 부탁드립니다.
Entity Framework's Entity Data Wizard Crashes When Connecting to MySQL Database

 

 

4. config의 수정

 

3까지의 단계에서 Web.config (또는 App.config) 가 자동으로 수정됩니다.

entityFramework태그의 디폴트 설정인 상태로는 MySQL에 접속이 되지 않기 때문에 하기와 같이 수정 합니다.

또한 connectionString태그를 각자 설정에 맞게 별도 수정 할 필요가 있습니다.

 

「App.config」나 「Web.config」에 있는 Entity Framework의 디폴트 태그를 삭제합니다.

<entityFramework>   
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">  
<parameters> 
<parameter value="v11.0" />  
</parameters>  
</defaultConnectionFactory>  
 <providers>  
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />  
</providers>  
</entityFramework>

 

config에 하기의 Entity Framework태그를 추가합니다.

<entityFramework>  
	<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" /> 
	<providers>  
	<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />     
	</providers>  
</entityFramework>

 

5. 프로젝트를 빌드

 

 

6. ADO.NET Entity Data Model을 추가

 

 

 

 

원글 작성일  2018-12-13

댓글