EntityFramework와 MySQL 접속하기 -2
아래 기사의 실제 실행예와 문제점에 대한 해결방법
아래의 전제조건에서의 신규 프로젝트 작성 ~ DB 모델의 추가까지
You completely Install mysql-installer-community-5.7.3.0-m13.msi or Install both ofmysql-visualstudio-plugin-1.1.1.msi and mysql-connector-net-6.8.3.msi.
1. Install-Package EntityFramework
2. Install-Package MySql.Data
3. Install-Package MySql.Data.Entity
4. Install-Package MySql.Web
5. Edit Web.config
<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>
6. Clean & Build
7. Make ADO.NET Entity Data Model
그 외
1. 날짜 변환시에 에러가 발생할 경우
MySQL에서 System.DateTime의 값을 취득할 경우에 아래의 에러가 발생하는 경우가 있다.
Unable to convert MySQL date/time value to System.DateTime
해결 방법
아래의 내용을 connectionStrings에 추가한다.
<connectionStrings>
<add name="WPlocalEntities" connectionString="metadata=res://*/WPlocalModel.csdl|res://*/WPlocalModel.ssdl|res://*/WPlocalModel.msl;provider=MySql.Data.MySqlClient;provider connection string="server=localhost;user id=root;password=root;Charset=utf8;Convert Zero Datetime=True;persistsecurityinfo=True;database=wp-01"" providerName="System.Data.EntityClient" />
</connectionStrings>
2. 선택 가능한 데이터 소스의 일람에 MySQL Database이 표시 되지 않는 경우
Visual Studio 2015のMySQL Database의 추가 방법
References 에 이하 3개의 패키지를 추가한다(기존에 이미 인스톨 되어 있을 경우엔 언인스톨 한 후-> 재 인스톨)
- https://www.nuget.org/packages/MySql.Data/
- https://www.nuget.org/packages/MySql.Data.Entity/
- https://www.nuget.org/packages/MySql.Web/
App.config의 의 내용을 수정한다. 기존의 내용은 코멘트 아웃 시키고 아래 참고 사이트에 있는 내용을 적용시킨다.
- http://stackoverflow.com/questions/22031269/enable-entity-framework-6-for-mysql-c-in-winforms-of-microsoft-visual-studio
선택 가능한 Data Source에 MYSQL Database가 표시되는걸 확인할 수 있다.
3. [Choose Your Data Connection]에서 [Choose Your Database Objects and Settings]로 넘어 가려고 하면 갑자기 화면이 닫히는 현상이 발생할 경우
MySQL Installer의 Connector/ODBC이 영향을 끼치고 있을 가능성이 높으므로 ODBC를 언인스톨 한 다음 재 인스톨 하면 멀쩡해 지는 경우가 있다.
4. 일본어 문자 깨짐 방지
DB의 Character-set를 utf-8로 변경한다.
접속 문자열에 「Charset=utf8;」이 없을 경우 일본어가 깨지기 때문에 아래와 같이 추가한다.
<add name="WPlocalEntities" connectionString="metadata=res://*/WPlocalModel.csdl|res://*/WPlocalModel.ssdl|res://*/WPlocalModel.msl;provider=MySql.Data.MySqlClient;provider connection string="server=localhost;user id=root;password=root;Charset=utf8;persistsecurityinfo=True;database=wp-01"" providerName="System.Data.EntityClient" />