Strict On 時の AddHandler .MouseClick, New EventHandler(AddressOf ...)
Option Strict On を設定しているとき、
AddHandler .MouseClick, New EventHandler(AddressOf NotifyIcon1_MouseClick())
以下のエラーが出る場合の対処方法。
'Private Sub NotifyIcon1_MouseClick(sender As Object, e As System.Windows.Forms.MouseEventArgs)' のパラメーター 'e' に対して引数が指定されていません。
'Private Sub NotifyIcon1_MouseClick(sender As Object, e As System.Windows.Forms.MouseEventArgs)' のパラメーター 'sender' に対して引数が指定されていません。
ちなみに定義側は以下の引数を受ける。
Private Sub NotifyIcon1_MouseClick(sender As Object, e As MouseEventArgs)
If e.Button = Windows.Forms.MouseButtons.Left Then
…
End If
End Sub
<対処方法>
AddHandler .MouseClick, New MouseEventHandler(AddressOf NotifyIcon1_MouseClick())
以上
Entity Framework 6 + MySQL 5.6 でADO.NET Entity Data Model デザイナを使う手順
Entity Framework 6 を MySQL 環境でADO.NET Entity Data Model デザイナを使う手順。
【この手順を行った環境】
- Visual Studio Professional 2012 Version 11.0.61030.00 Update 4
- MySQL 5.6.20
【手順】
- mysql-visualstudio-plugin-1.1.1.msiのインストール
- mysql-connector-net-6.8.3.msiのインストール
- NuGetパッケージの管理で以下をインストール
・EntityFramework (6.1.1)
・Mysql.Data (6.9.3)
・Mysql.Data.Entities (6.8.3.0)
・Mysql.Web (6.9.3) - 手順3までの操作で Web.config (あるいはスタンドアロンAPなら App.config) が修正されます。
- connectionStringタグを若干修正します。このあたり分かりにくいので、手順3、手順4を行った後のコンフィグレーションの例を脚注に載せておきます。*1
ダウンロード先:
MySQL :: MySQL for Visual Studio 1.1.1 Beta available for download
MySQL :: Download Connector/Net
【ADO.NET Entity Data Model デザイナ利用時の注意点】
ウィザードが前回のDB接続先を表示してくれないため?、毎回、ウィザード完了後にconnectionStringsタグに子タグが定義されてしまいます。毎回、手動で消します。
【ハマったときは】
◆Web.configの内容を書き換えても何も状況が変わらない。あるいは、ウィザードの途中で変な警告が出る。
→リビルドを行う。リビルドもエラーがあってもダメ。取り合えずでもリビルドが完遂するように取り繕うこと。
◆WebアプリからDBアクセスを行うと例外が発生する。
Keyword not supported.
パラメーター名:metadata
→connectionStringの子タグの providerName属性が"MySql.Data.MySqlClient"になっているためかも。"System.Data.EntityClient"にする。
◆Code Firstで作っていないのにWebアプリからDBアクセスを行うと以下の例外が発生する。
The context is being used in Code First mode with code that was generated from an EDMX file for either Database First or Model First development. 以下、略。
行 20: 行 21: Protected Overrides Sub OnModelCreating(modelBuilder As DbModelBuilder) 行 22: Throw New UnintentionalCodeFirstException() 行 23: End Sub 行 24:
→connectionStringの子タグのconnectionString属性にmetadata=を指定していないため
参考にしたサイト:
*1:
関係ありそうな箇所の抜粋です <configSections> <connectionStrings> <system.web> <runtime> <entityFramework> <system.data>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<add name="HogeEntities" connectionString="metadata=res://*/Models.HogeModel.csdl|res://*/Models.HogeModel.ssdl|res://*/Models.HogeModel.msl;provider=MySql.Data.MySqlClient;provider connection string="server=localhost;user id=root;password=HOGE;persistsecurityinfo=True;database=sampledb"" providerName="System.Data.EntityClient" />
</connectionStrings>
<membership defaultProvider="MySQLMembershipProvider">
<providers>
<remove name="MySQLMembershipProvider" />
<add name="MySQLMembershipProvider" type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=6.9.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Clear" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
</providers>
</membership>
<profile defaultProvider="MySQLProfileProvider">
<providers>
<remove name="MySQLProfileProvider" />
<add name="MySQLProfileProvider" type="MySql.Web.Profile.MySQLProfileProvider, MySql.Web, Version=6.9.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" applicationName="/" />
</providers>
</profile>
<roleManager defaultProvider="MySQLRoleProvider">
<providers>
<remove name="MySQLRoleProvider" />
<add name="MySQLRoleProvider" type="MySql.Web.Security.MySQLRoleProvider, MySql.Web, Version=6.9.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" applicationName="/" />
</providers>
</roleManager>
<siteMap defaultProvider="MySqlSiteMapProvider">
<providers>
<remove name="MySqlSiteMapProvider" />
<add name="MySqlSiteMapProvider" type="MySql.Web.SiteMap.MySqlSiteMapProvider, MySql.Web, Version=6.9.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" applicationName="/" />
</providers>
</siteMap>
<webParts>
<personalization defaultProvider="MySQLPersonalizationProvider">
<providers>
<remove name="MySQLPersonalizationProvider" />
<add name="MySQLPersonalizationProvider" type="MySql.Web.Personalization.MySqlPersonalizationProvider, MySql.Web, Version=6.9.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" applicationName="/" />
</providers>
</personalization>
</webParts>
</system.web>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-1.3.0.0" newVersion="1.3.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.9.3.0" newVersion="6.9.3.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<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>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
</configuration>
EFTools
Entity Framework 5 から 6.1.1 に変更したところ、コンフィグレーションの entityFramework タグ内の providers タグでエラーが出るようになった。
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
使っている Entity Framework と Visual Studio のバージョンの組み合わせのあった EF Tools をインストールすると解決する。