programing

엔티티 프레임 워크 6에 MySQL 연결을 사용할 수 없습니다.

javaba 2021. 1. 15. 19:09
반응형

엔티티 프레임 워크 6에 MySQL 연결을 사용할 수 없습니다.


MySQL과 함께 엔티티 프레임 워크 6을 사용하려고합니다.

Visual Studio 1.1.1 및 MySQL .Net 커넥터 6.8.3 용 MySQL 플러그인을 설치했습니다.

문제는 새 ADO.NET Entity 모델을 만들려고 할 때 연결에 MySQL을 선택할 수 없다는 것입니다.

여기에 이미지 설명 입력

하지만 Visual Studio의 연결 도구에서 연결을 생성하면 MySQL을 볼 수 있습니다.

여기에 이미지 설명 입력

현재 설치된 버전이 엔티티 프레임 워크 6과 호환되지 않음을 의미합니다. 최신 커넥터와 플러그인을 설치 한 후 어떻게 가능합니까? 할 일이 더 있습니까?

감사합니다

편집하다

기본 커넥터를 설치하지 않고 MySQL을 새로 설치 한 다음 6.8.3과 Visual Studio 용 플러그인을 설치했습니다.

그런 다음 엔터티 모델에 대한 연결을 볼 수 있지만 엔터티 버전을 선택하려고 할 때이 메시지가 표시됩니다.

여기에 이미지 설명 입력


최신 편집

버그가 수정되었습니다.

Chris의 의견 :

2015-11-07 이제 파일을 편집하거나 이상한 작업을 수행하지 않고도 모든 작업을 수행 할 수 있습니다. Windows 용 MySQL 설치 관리자를 사용하고 Visual Studio 지원 및 최신 Connector.Net을 포함합니다. 설치 후 반드시 업데이트하면 최신 버전 (1.2.5 및 6.9.8)을 얻을 수 있습니다. NuGet을 사용하여 EntityFramework, MySql.Data 및 MySql.Data.Entity를 설치합니다. 마지막으로 Ado.Net 엔터티 모델을 추가하여 코드 우선 리버스 엔지니어링의 장점을 구축하고 즐기십시오.

원래 답변

MySQL의 버그라는 것을 알았습니다.

해결 방법을 설명하는 링크는 다음과 같습니다 .

VS 2013이 설치된 컴퓨터에서 VS 플러그인 (1.1.3 GA) 및 Connector / Net

단계를 수행하기 전에 모든 VS 인스턴스를 닫습니다.

Windows 탐색기 창에서이 경로 또는 Connector / net 바이너리를 설치 한 위치로 이동하십시오.

C : \ Program Files (x86) \ MySQL \ MySQL Connector Net 6.8.3 \ Assemblies \ v4.5 \

파일 복사 :

MySql.Data.Entity.EF6.dll

이 폴더에 붙여 넣으세요

C : \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ PrivateAssemblies

덮어 쓸 것인지 묻는 메시지가 나타나면 그렇게하십시오.

파일을 덮어 쓰려면 관리자 권한이 필요합니다.

그런 다음 모델에 대한 스크립트 생성을 다시 시도 할 수 있습니다.

이 해결 방법은이를위한 것이므로 1.1.3 버전의 VS 플러그인을 설치하는 것이 중요합니다.

불행히도 저에게는 작동하지 않으므로 문제를 해결할 때까지 엔티티 프레임 워크 5로 다운 그레이드했습니다.

편집하다

이제 작동합니다.

다음 3 개의 DLL을 추가해야했습니다.

  • C : \ Program Files (x86) \ MySQL \ MySQL Connector Net 6.8.3 \ Assemblies \ v4.5 \ MySql.Data.dll
  • C : \ Program Files (x86) \ MySQL \ MySQL Connector Net 6.8.3 \ Assemblies \ v4.5 \ MySql.Data.Entity.EF6.dll
  • C : \ Program Files (x86) \ MySQL \ MySQL Connector Net 6.8.3 \ Assemblies \ v4.5 \ MySql.Web.dll

그런 다음 웹 구성의 EntityFramework 부분을 다음과 같이 변경했습니다.

<entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" /> 
    </providers>
  </entityFramework>

REBUILD를 잊지 마시고 MySQL을 사용하여 엔티티 프레임 워크 6 모델을 생성 할 수 있어야합니다.

중대한

Visual Studio 1.1.3 용 MySQL 및 MySQL 커넥터 .net 6.8.3 을 설치했는지 확인하십시오.


해결책! 2017 년

Nuget 패키지 설치 :

Install-Package EntityFramework
Install-Package MySql.Data.Entity -Version 6.9.9

비주얼 스튜디오 1.2.6를 위해 MySQL을 설치 - https://dev.mysql.com/downloads/windows/visualstudio/

Web.Config의 변경 사항

<EntityFramework>

에:

<EntityFramework codeConfigurationType = "MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">

추가 (** 정보 **) :

<connectionStrings>
<add name="**YourContextName**" connectionString="server=**xxx.xxx.xxx.xxx**;port=3306;user id=**your user**;password=**your password**;database=**your database**" providerName="MySql.Data.MySqlClient" /></connectionStrings>


Visual Studio 다시 시작

My Settings:
- Microsoft Visual Studio Community 2015
- Dot Net Framework 4.5.2
- Asp.Net MVC 5.2.3.0
- MySql Server 5.6


Not sure if this is still a problem for you, guys, but none of the above solutions worked for me... until I found this:

http://www.microsoft.com/en-us/download/details.aspx?id=40762

After applying the patches (for both VS2013 and VS2012), I got VS2013 working wonderfully with EF6 for MySql.

ps. Package versions installed (from NuGet):
EntityFramework - 6.1.3 (03/10/2015)
MySqlData - 6.9.6 (02/24/2015)
MySql.Data.Entity - 6.9.6 (02/24/2015)
MySql.Web - 6.9.6 (02/24/2015)

NuGet does the job right and updates Web.Config accordingly, filling the "entityFramework" section with whatever needed.

For VS2013, it simply goes from "Not Working at all" to "Fully functional". For VS2012, it makes it possible to use "Code First from Database", which was not available before applying the patch.

I wish I had found this about 10 days ago, so hope this may still be of some help.


For me reinstalling MySQL and using the installed connector version as a reference in Visual studio worked!

Steps:

  1. Reinstall MySQL Tools with the latest stable MySQL connector for windows.
  2. Add this 3 files as reference in Visual Studio:

  3. MySql.Data.dll

  4. MySql.Data.Entity.EF6.dll
  5. MySql.Web.dll

  6. Modify following Web.config from

      <providers>
        <provider invariantName="System.Data.SqlClient"  type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
     </providers>
    

To:

 <providers>
  <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
  <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
</providers>

Make sure your connection username/password/db name are correct or Visual Studio may crash. (Happened with me.)


Did you try to install the latest dot net connector for my sql ? http://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html or http://dev.mysql.com/downloads/connector/net/ depending your context.


2015-11-07 Update

The bugs are fixed and you can now get it all working without editing any files or even referencing assemblies outside of NuGet. You simply have to install the right thing and add the right NuGet packages. Here's how:

Use the MySQL for Windows installer and include the Visual Studio support and the latest Connector.Net. Be sure to update after installing and you will get the latest of each (1.2.5 and 6.9.8).

Then, use NuGet to install EntityFramework, MySql.Data, and MySql.Data.Entity.

Finally, build and enjoy code-first reverse engineering goodness by adding an Ado.Net Entity Model.


i found this on the mySQL Bucktracker

Try the following workaround....

Run the following command on the MySQL DB and then try if this works.

set global optimizer_switch='derived_merge=off'

I also added the following assemblies:

  • EF6 as Nuget package
  • MySQL.Data
  • MySql.Data.Entity.EF6.dll
  • MySQL.Web (not sure if really needed)

FYI for everyone using a multi-project solution, if you can't run your GUI project due to problems with finding/loading MySql EF6 provider, like:

No Entity Framework provider found for the ADO.NET provider with invariant name 'MySql.Data.(...)'. Make sure the provider is registered in the 'entityFramework' section of the application config file. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.

please see this question.

Although it's about SqlServer the problem might be the same: if only one of your projects handles the DB operations, then most probably you added Nuget References to MySql.Data and MySql.Data.Entity and EntityFramework to that project. Since MySql.Data and EntityFramework are used directly by the code, the build process is smart enough to copy them to output folder, and to copy it second time to the GUI project's output folder as well.

However, since MySql.Data.Entity is referred to only by the app.config or web.config text file, the build process thinks that this reference is not needed (the code does not use it!) and strips it away, and you won't see MySql.Data.Entity.EF6.dll in GUI project output dir, and this causes the GUI project to be unable to find that provider.

So - two options - ensure that something copies that DLL there as a part of build process (i.e. pre/post build event, deployment package builder, CI task, human task, whatever), or just make a direct reference to the assembly in your DB/EF6 project.


My was facing the same issue.

다음을 수행했습니다.
1.
https://dev.mysql.com/downloads/windows/visualstudio/ 에서 Visual Studio 용 MySQL을 설치합니다.
2. 내 프로젝트에
MySql.Data를 설치합니다. 3. 내 프로젝트에 MySql.Data.EntityFramework를 설치합니다.

참조 URL : https://stackoverflow.com/questions/21206184/cant-use-a-mysql-connection-for-entity-framework-6

반응형