'MySql'에 대한 엔티티 프레임워크 제공자를 찾을 수 없습니다.데이터, MySql Client' ADO.NET 프로바이더
제가 MySQL로 Entity Framework를 사용하려고 하는데 위의 오류가 발생합니다.최신 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.
하지만 'entity Framework' 섹션에서 등록 방법만 제시하는 것은 찾을 수 없습니다.
일부 다른 게시물(예: 제공자를 에 추가할 것을 제안합니다.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>
하지만 그것은 효과가 없어요 왜냐하면 그것은 그가 주장하는 것은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
그래서 공급자는 거기에 있지만 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>
EF5 이하에서는, 모두 좋습니다. EF6에서는, mysql connector 6.8.x를 사용하고, DbConfiguration을 추가해야 합니다.Attribute to you DbContext:
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class DemoContext : DbContext{}
MySql에 있는 MySqlEF 구성입니다.데이터. 엔티티.EF6.dll in 6.8.x 한 번 해보세요!
다음 섹션을 구성(EF 5)에 작성해야 합니다.
<entityFramework>
<!-- ... -->
<providers>
<provider invariantName="MySql.Data.MySqlClient"
type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity" />
</providers>
</entityFramework>
업데이트: EF 6의 경우 다음 정의를 사용합니다.
<entityFramework>
<!-- ... -->
<providers>
<provider invariantName="MySql.Data.MySqlClient"
type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
</providers>
</entityFramework>
엘쿨 덕분입니다.
MySQL, ADO로 Visual Studio Professional 2017 환경을 구성하려고 할 때도 마찬가지였습니다.NET(Database First) 및 EF6.
모든 Connector/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 전에 MySQL for Visual Studio를 설치합니다.
"Connector/NET" v6.9.10(Connector/Net)을 설치합니다.https://i.stack.imgur.com/XOT1I.jpg 참고:Connector/NET v6.8, v6.10 및 v8을 먼저 사용해 보았지만 아무 것도 작동하지 않았습니다. 여기서 모든 Connector 버전 및 Visual Studio IDE와의 호환성을 찾을 수 있지만 지금까지 이 목록은 정확하지 않습니다.
NuGet을 통해 "Entity Framework" 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>
- 프로젝트를 재구성합니다.
그게 다였다.VS2017은 저를 위해 준비되었습니다.오늘 저도 그랬듯이 모두에게 효과가 있기를 바랍니다.
참조:
버전 요약만 추가하는 중 (너무 오래된 6.2를 시도하는 것을 보니)
- EF4의 경우 Connector/NET 6.6.x(현재 GA는 6.6.6)를 사용합니다.
- EF5의 경우 Connector/NET 6.7.x(현재 GA는 6.7.4) 또는 Connector/NET 6.8.x(현재 GA는 6.8.3)를 사용합니다.
- EF6의 경우 Connector/NET 6.8.x(현재 GA는 6.8.3)를 사용합니다.
EntityFramework 5.0에서 6.1로, MySQL 커넥터 6.8.3으로 업데이트를 했는데 다시 작업을 진행하기 위해 속성을 추가하기만 하면 되었습니다.속성을 추가하기 전에 모든 것이 정상적으로 컴파일되지만 런타임에 충돌합니다.
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class DemoContext : DbContext{}
나는 구성 문자열과 설정의 모든 조합을 시도했지만 결국 알아냈습니다.제 솔루션은 한 프로젝트에 소스 코드가 있고 다른 프로젝트에 테스트가 있습니다.저는 Entity Framework 6.1.1을 사용하고 있었고, MySql Connector 6.8.3과 MySql for Visual Studio 1.2.3을 설치했습니다.
문제는 NuGet에서 패키지를 관리하게 했는데 메인 프로젝트에만 포함시킨 것입니다.그 해결책은
- 솔루션 마우스 오른쪽 버튼(솔루션 탐색기의 최상위 수준)
- 솔루션에 대한 Nuget 패키지 관리
- 설치된 탭으로 이동
- 모든 EntityFramework 관련 패키지(MySql).데이터, MySql.데이터. 엔티티, MySql.ConnectorNET.엔티티와 MySql.ConnectorNET.Data)를 선택한 후 "Manage" 버튼을 선택합니다.
- 모든 프로젝트에 대해 각 패키지를 활성화합니다.
나중에 참고할 수 있도록 필요한 모든 단계(어셈블리, 구성 등)가 포함된 MySQL Connector/Net with EF 6 사용에 대한 공식 가이드를 소개합니다.10장 EF 6 지원
nuget https://www.nuget.org/packages/MySql.Data.Entity/ 에서 최신 버전 설치
제 경우에는 누락된 참고 자료였습니다.EntityFramework 6으로 업그레이드할 때 어셈블리에 참조를 추가해야 합니다.
시스템.데이터.독립체
MySql 때문인 것 같습니다.데이터. 엔티티.EF6는 이전 버전의 EF에서는 사용하지 않았던 이 어셈블리의 여러 가지 내용을 이어받습니다.
당신의 app.config가 좋고 당신의 모든 레퍼런스가 괜찮은 것 같다면 확인해 볼만한 솔루션입니다.
신경쓰지 마세요.EF 6을 설치한 것을 확인했습니다.그것을 제거하고 대신 EF 5를 시도해 보았는데(누겟은 최신 안정 버전이라고 합니다) 작동하기 시작했습니다.
그래도 좀 더 유용한 오류 메시지가 좋았을 텐데요!
MySql 프로바이더만 machine-config(예: .net connector installer)에 설치할 수 있습니까?또한 기본 연결 팩토리는 "MySql"과 같은 것이어야 합니다.데이터.MySql Client.MySql ClientFactory, MySql.데이터, 버전=6.7.4.0, Culture=neutral, PublicKey토큰=c5687fc88969c44d" 아마...
언급URL : https://stackoverflow.com/questions/15142841/no-entity-framework-provider-found-for-mysql-data-mysqlclient-ado-net-provider
'programing' 카테고리의 다른 글
What Runtime예외적으로 Spring Crud Repository가 던질 수 있습니까? (0) | 2023.09.11 |
---|---|
커서 드래그로 텍스트/요소 선택을 방지하려면 어떻게 해야 합니까? (0) | 2023.09.11 |
realoc() 전에 malloc()이 필요합니까? (0) | 2023.09.11 |
C/C++ stdlib 명명 규칙의 이름은? (0) | 2023.09.11 |
heroku에서 db를 다운로드하려면 어떻게 해야 합니까? (0) | 2023.09.11 |