MySQL的实体框架defaultConnectionFactory

时间:2014-02-06 13:40:23

标签: c# mysql .net entity-framework

当我将connectionString名称指定为基础构造函数的参数时,以下配置正常工作。因为我希望以后能够在不重新编译的情况下更改默认提供程序,我想在app.config中设置它,但我不知道typedefaultConnectionFactory提供什么

  <connectionStrings>
    <add name="MySQL" providerName="MySql.Data.MySqlClient" connectionString="SERVER=localhost;DATABASE=abc;UID=root;PASSWORD=;" />
  </connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, EntityFramework"></defaultConnectionFactory>
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
    </providers>
  </entityFramework>

例外:

  

无法将Database.DefaultConnectionFactory设置为的实例   'MySql.Data.Entity.MySqlConnectionFactory,EntityFramework'类型   在应用程序配置中指定。请参阅内部异常   的信息。

内部异常(已翻译,VS设置为英语,但某些消息仍为我的语言):

  

无法加载“MySql.Data.Entity.MySqlConnectionFactory”类型   程序集“EntityFramework”

documentation表示程序集名称在冒号后面,因此我也尝试了MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6,给了我这个例外:

  

初始化字符串的格式不符合规范   从索引0开始。

我正在使用EF6,MySql.Data&amp; MySql.Data.Entity.EF6 6.8.3.0。

1 个答案:

答案 0 :(得分:8)

connectionString name属性必须与您的上下文相同。这很好用:

  <connectionStrings>
    <add name="NAMEOFYOURCONTEXT" providerName="MySql.Data.MySqlClient" connectionString="Server=localhost;Database=abc;Uid=root;Pwd='';" />
  </connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6"></defaultConnectionFactory>
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"></provider>
    </providers>
  </entityFramework>