Mat*_*and 32 mysql entity-framework
我正在尝试使用MySQL的实体框架,我得到上述错误.我安装了最新的MySQL连接器.
完整错误如下:
No Entity Framework provider found for 'MySql.Data.MySqlClient' ADO.NET provider. Make sure the provider is registered in the 'entityFramework' section of the application config file.
Run Code Online (Sandbox Code Playgroud)
但是,我找不到任何暗示你如何在'entityFramework'部分注册它的东西.
其他一些帖子(示例)建议将提供程序添加到以下system.Data DbProviderFactories部分:
<DbProviderFactories>
<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.2.3.0, Culture=neutral,
PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为它声称invariant名称是重复的.而且,如果我实际迭代,System.Data.Common.DbProviderFactories我可以看到最后一个是MySQL提供者:
MySQL Data Provider
.Net Framework Data Provider for MySQL
MySql.Data.MySqlClient
MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.6.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d
Run Code Online (Sandbox Code Playgroud)
所以提供商在那里,但EF拒绝使用它.有任何想法吗?
我的完整配置如下所示:
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<system.data>
<!--<DbProviderFactories>
<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.2.3.0, Culture=neutral,
PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>-->
</system.data>
<connectionStrings>
<add name="myContext" connectionString="server=****;User Id=****;password=****;Persist Security Info=True;database=myDb"
providerName="MySql.Data.MySqlClient" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
</configuration>
Run Code Online (Sandbox Code Playgroud)
小智 33
在EF5或更低,一切都好.在EF6中,您需要使用mysql连接器6.8.x,并将DbConfigurationTypeAttribute添加到DbContext:
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class DemoContext : DbContext{}
Run Code Online (Sandbox Code Playgroud)
哪个MySqlEFConfiguration在6.8.x中的MySql.Data.Entity.EF6.dll中.试试!
Der*_*ter 29
您需要在config(EF 5)中创建此部分:
<entityFramework>
<!-- ... -->
<providers>
<provider invariantName="MySql.Data.MySqlClient"
type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity" />
</providers>
</entityFramework>
Run Code Online (Sandbox Code Playgroud)
更新:对EF 6使用此定义:
<entityFramework>
<!-- ... -->
<providers>
<provider invariantName="MySql.Data.MySqlClient"
type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
</providers>
</entityFramework>
Run Code Online (Sandbox Code Playgroud)
感谢elcool.
尝试使用MySQL,ADO.NET(数据库优先)和EF6配置Visual Studio Professional 2017环境时,我遇到了同样的情况.
在完成每个连接器/ NET的地狱后,我使用Connector/NET v6.9.10并按照以下步骤操作.
如果已安装,请卸载/删除"Connector/NET"和"MySQL for Visual Studio".
安装"MySQL for Visual Studio"v2.0.5 CTP(MySQL for Visual Studio).注意:在Connector/NET之前为Visual Studio安装MySQL.
安装"Connector/NET"v6.9.10(连接器/网络). https://i.stack.imgur.com/XOT1I.jpg注意:我首先尝试使用Connector/NET v6.8,v6.10和v8,但它们都没有工作在这里你可以找到所有连接器版本和兼容性与Visual Studio IDE,但到目前为止这个列表是不准确的.
通过NuGet下载并安装"EntityFramework"v6.2.0.
添加对C:\Program Files (x86)\MySQL\Connector.NET 6.9.10\Assemblies\v4.5\MySql.Data.dll
和的
引用C:\Program Files (x86)\MySQL\Connector.NET 6.9.10\Assemblies\v4.5\MySql.Data.Entity.EF6.dll.
在实体框架提供程序下的App.config中添加MySQL EF6提供程序信息,如下所示:
<entityFramework>
<providers>
<provider invariantName="MySql.Data.MySqlClient"
type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
</providers>
</entityFramework>Run Code Online (Sandbox Code Playgroud)
就是这样.VS2017准备好了.希望这对所有人都有效,就像今天对我一样.
参考文献:
只是添加版本摘要(因为我看到您正在尝试 6.2,它太旧了)
没关系。我注意到我安装了 EF 6。我删除了它并尝试使用 EF 5(NuGet 说这是最新的稳定版本),它开始工作。
不过,如果有更有用的错误消息就更好了!