EntityFrameworkとMySQL
下記の記事の実例と問題点の対策
下記前提条件が満たされている場合の新規プロジェクト作成~モデル追加まで
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
その他
日付変換でエラーが発生する問題
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>
選択するデータソースの一覧に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のの内容を修正する。既存の内容はコメントにして、下記urlにある内容を適用する。
下記URLを参考にApp.configの内容を修正する。 http://stackoverflow.com/questions/22031269/enable-entity-framework-6-for-mysql-c-in-winforms-of-microsoft-visual-studio
選択可能なData SourceにMYSQL Databaseが表示される。
[Choose Your Data Connection]から[Choose Your Database Objects and Settings]に移行しようとしたら画面が急に閉ざされる現象が起きる場合の対策
MySQL InstallerのConnector/ODBCが邪魔してる可能性があるので、ODBCをアンインストールして再インストールすると直る場合がある。
日本語の文字化け
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" />
以上