IT業界のすみっこ暮らし

ふと気がついたときの記録

EntityFrameworkとMySQL

下記の記事の実例と問題点の対策

pie001.hatenablog.com


下記前提条件が満たされている場合の新規プロジェクト作成~モデル追加まで

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

f:id:papamau:20170224183252p:plain

2、Install-Package MySql.Data

f:id:papamau:20170224183322p:plain

3、Install-Package MySql.Data.Entity

f:id:papamau:20170224183344p:plain

4、Install-Package MySql.Web

f:id:papamau:20170224183402p:plain

5、Edit Web.config

f:id:papamau:20170224183443p:plain

  <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

f:id:papamau:20170224183539p:plain

f:id:papamau:20170224183545p:plain

f:id:papamau:20170224183553p:plain

f:id:papamau:20170224183558p:plain

f:id:papamau:20170224183609p:plain

f:id:papamau:20170224183707p:plain

f:id:papamau:20170224183733p:plain

その他

日付変換でエラーが発生する問題

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=&quot;server=localhost;user id=root;password=root;Charset=utf8;Convert Zero Datetime=True;persistsecurityinfo=True;database=wp-01&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>

選択するデータソースの一覧にMySQL Databaseがない問題

Visual Studio 2015のMySQL Database追加手順

f:id:papamau:20170224184250p:plain

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

f:id:papamau:20170224184111p:plain

f:id:papamau:20170224184132p:plain

選択可能なData SourceにMYSQL Databaseが表示される。

f:id:papamau:20170224184204p:plain

[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=&quot;server=localhost;user id=root;password=root;Charset=utf8;persistsecurityinfo=True;database=wp-01&quot;" providerName="System.Data.EntityClient" />

以上