Microsoft Visual Studio 2013의 WinForms에서 엔티티 프레임워크 6 for MySql(C#) 활성화
어제 저는 Entity Framework가 Dataset 또는 DataReader를 사용하는 것 외에 데이터베이스에 액세스하는 또 다른 방법이라는 것을 알고 MVS 2013에서 Entity Framework 6을 MySql 데이터베이스 서버에서 사용할 수 있도록 했습니다.
에서 WinForms를 엽니다.NetFramework 4.5.1. (따라서 프로젝트에 App.config만 있고 app/web config는 없습니다) mysql-installer-community-5.7.3.0-m13.msi를 설치한 후
설치EntityFramework 패키지:
TOOLS 메뉴 -> Library Package Manager -> 솔루션용 NuGet Package 관리...-> 온라인 -> (검색) EntityFramework (이 패키지의 버전을 주의하고 버전 6.0.2이어야 하며, 아니면 Update -> EntityFramework를 클릭하여 업데이트)
ADO를 추가하려고 했을 때.NET 엔티티 데이터 모델:
Project -> Add -> New Item -> ADO 우클릭 합니다.NET 엔티티 데이터 모델 -> 데이터베이스에서 생성 -> 새 연결 -> 데이터 소스: -> 변경...-> MySQL 데이터베이스 -> 서버 이름에 서버 IP, 사용자 이름 및 비밀번호 입력 -> 데이터베이스 이름 선택 -> 연결 테스트 -> 확인
그러면 Entity Connection 문자열이 생성됩니다 -> App에서 Entity 연결 설정 저장을 클릭합니다.-> 다음으로 구성> ->
Entity Framework의 어떤 버전을 사용하시겠습니까?Entity Framework 6.0 옵션이 있지만 다음과 같은 이유로 사용할 수 없습니다.
"프로젝트에서 최신 버전의 Entity Framework를 참조하지만, 이 버전과 호환되는 Entity Framework 데이터베이스 공급자를 찾을 수 없습니다.이 작업을 수행하기 전에 이 마법사를 종료하고 호환되는 공급자를 설치한 후 프로젝트를 다시 빌드하십시오."
어떻게 해결해야 할까요?
그런데 Nuget Package에 Entity Framework 버전 5를 설치하면 여기에 Entity Framework 5.0 옵션이 있을 수 있고 Entity Framework 5를 사용할 수 있지만 버전 6은 사용할 수 없습니다.
우선 mysql-installer-community-5.7.3.0-m13.msi를 설치할 필요도 없습니다.
- 최신 mysql-visual Studio-plugin 설치
- 최신 mysql-connector-net 설치
- 새 C#.Net 4.5 Framework WinForms (4.0의 경우에는 Do Entity Framework 6 지원을 기반으로 작동해야 함).NET 4.0? )
- Nuget Package 4개 설치(Mysql을 설치하는 경우 순서에 따릅니다.Data.EntityFramework 이전의 엔티티는 종속성을 해결하고 EntityFramework 6.0.2를 설치하지만 필요한 것은 EntityFramework 6.1.0)입니다.
엔터티 프레임워크
Mysql.Data
Mysql.Data.엔터티
Mysql.Web
5. App.config에 태그 entityFramework가 있는 경우 코멘트를 달아주시고 태그 시작 후 App.config에 새로운 태그 entityFramework를 삽입해주세요.
<entityFramework>
<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>
6. ADO를 추가합니다.NET 엔티티 데이터 모델(문제에 언급된 바와 같이)
7.Entity Connection 문자열이 생성된 후(문제에 언급된 대로) App에서 개체 연결 설정 저장을 체크합니다.다음과 같이 구성한 후 다음을 클릭합니다.
8. 데이터베이스 개체 및 설정(테이블, 보기 또는 저장 프로시저 및 함수)을 선택합니다. (Entity Framework 6.0 제공자가 하나밖에 없기 때문에 "어떤 버전의 Entity Framework를 사용하시겠습니까?"를 사용하지 않으므로 유일한 제공자가 유효하면 선택을 직접 건너뜁니다.)
9.끝나다
축하합니다 ^^
그런데 .dll 파일을 추가해야 할 수도 있습니다.
- MySql.Data.dll
- MySql.Data.독립체.EF6.dll
- MySql.Web.dll
이 폴더 안에
C:\Program Files\MySQL\MySQL Connector Net 6.8.3\어셈블리\v4.5(32비트 창)
C:\Program Files(x86)\MySQL\MySQL Connector Net 6.8.3\어셈블리\v4.5(64비트 창)
추가 EF6 기능에 대한 귀하의 프로젝트 참고 자료로 사용됩니다.
저는 V-Shy가 준 지시를 따랐고 마법사가 저를 종료한 상태에서 LaRae White와 같은 문제를 겪고 있었습니다.VS2015를 실행하고 있으며 방금 MySql 설치 관리자를 사용하여 MySql for Visual Studio v1.2.6 및 Connector/NET v6.9.8로 업데이트했습니다.
결국 제가 이 일을 성공시키기 위해 한 일은 이것이었습니다.
- 이 문제를 해결하기 위해 이전에 설치한 패키지를 모두 제거합니다(EntityFramework, Mysql).데이터, Mysql.자료, 실체, Mysql.웹)
- C:\Program Files(x86)\MySQL\Connector에 있는 다음 참조를 추가했습니다.NET 6.9\Assemblys\v4.5 수동: MySql.Data.dll, MySql.데이터. 엔티티.EF6.dll과 MySql.웹.dll
누군가에게 도움이 되었으면 좋겠습니다.
저는 하루 종일 이 문제를 해결하는 방법을 찾았지만 아무 도움도 되지 않습니다.사람들이 언급하지 않는 한 가지를 알아냈다는군요
model.edmx 속성에는 "DDL 생성 템플릿" 전체가 있으며, 기본적으로 "SSDLToSQL10.tt (VS)"로 설정되지만 "SSDLToMySQL.tt (VS)"로 설정해야 합니다.
또한 오류도 발생하고 있었습니다.
변환 실행 중:◦. 참조 예외Null 참조 예외 : .개체 참조가 개체 인스턴스에 설정되지 않았습니다.
Files 12.인 93c:\Program Files (x86)\Microsoft Visual Studio 12.0\n7807\ Tools toMySQL.ttIDE\Extensions\Microsoft\Entity Framework Tools\DBGen\
현재까지 사용할 수 없는 다음 빌드 1.1.4에서 수정될 "MySQL for Visual Studio 1.1.3"의 공식 버그로 연결된 이유는 무엇입니까?
방법이 : 과 이 이 과 .
"MySql"을 덮어씁니다.데이터. 엔티티.EF6.dll" 인
C:\Program Files(x86)\Microsoft Visual Studio 12.0\n7807\ AssemblyIDE\Private Assembly
NET Connector의 을 합니다.
C:\Program Files(x86)\MySQL\MySQL Connector Net 6.8.3\어셈블리\v4.5\
해결 방법은 다음과 같습니다.
- MySQL Visual Studio 플러그인 설치
- .NET용 MySQL Connector 설치
- 프로그램 파일 내의 MySQL Connector Assemblys에서 프로젝트의 참조를 추가합니다.
앱에서 이전 코드를 제거합니다.구성 또는 웹.구성
<entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> <parameters> <parameter value="mssqllocaldb" /> </parameters> </defaultConnectionFactory> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> </providers> </entityFramework>
아래에 주어진 코드로 대체합니다.
<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" /> </providers> </entityFramework>
프로젝트를 재구성하고 새 ADO를 추가해 보십시오.NET 엔티티 데이터 모델
를 합니다.DbContext
에는 MySQL 설명서에 나와 있는 것과 같은 주석이 있습니다.
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public partial class MyDbContext : DbContext
{
}
저는 제 데이터베이스가 처음 ASP라는 것을 계속 발견했습니다.NET MVC 애플리케이션을 사용하면 다른 컴퓨터의 소스 제어에서 벗어날 때까지 EDMX 파일을 업데이트할 수 있습니다.
제가 주석을 추가할 때까지 동일한 오류에 직면했기 때문에 EDMX를 업데이트할 수 없거나 엔티티 프레임워크 6과 함께 MySQL을 사용할 때 오류를 발견하는 사람에게 도움이 되었으면 합니다.
저도 같은 문제가 있었는데, 여기 있는 것과 같은 여러 가지 수정을 시도했고, MySQL 포럼의 일부 수정도 시도했지만 여전히 EDMX를 업데이트할 수 없었습니다.
얼마간의 시간(놀라울 정도로 긴 시간)이 흐른 후, 저는 제 Mvc Application을 위한 VS 2013 업데이트 3, .Net 커넥터 6.9.4, Mysql for VS 1.2.3과 함께 작동할 수 있었습니다.
처음에는 새로운 기계를 사용해봤는데 VS를 간단하게 설치하고 이어서 커넥터와 Mysql for VS로 모든 것이 작동했습니다.그리고 옛날 VS 2012로도 해봤는데 효과가 있었습니다.저는 이미 제 기계에 EF5로 몇 가지 프로젝트를 작성했고, 이전 EF5 파일이 EF6 파일과 간섭을 일으킬 수 있다고 생각했습니다.
여기 제가 한 일이 있습니다. 하지만 이 문제는 기계와 관련된 문제이며, 제가 필사적으로 시도한 모든 것의 목록을 알려드립니다.
C:\Program Files(x86)\Microsoft Visual Studio 12.0에서 MySql.*.dll을 모두 삭제합니다.\공통7\IDE\PrivateAssembly 폴더
MySql을 덮어씁니다.데이터.Entity.dll 폴더 C:\Program Files(x86)\Microsoft Visual Studio 12.0\공통7\IDE\PublicAssemblys와 Connector 폴더의 조합
Nuget 콘솔에서 프로젝트에서 EntityFramework를 제거한 다음 EF 6.0.0 : Install-Package EntityFramework - ProjectName YourProject - version 6.0.0으로 다운그레이드합니다.
MySql에 참조를 추가합니다.데이터. 엔티티.Nuget을 사용하지 않고 파일을 직접 참조하여 EF6(C:\Program Files(x86))\MySQL Connector Net 6.9.4\어셈블리\v4.5\MySql.데이터. 엔티티.EF6.dll)
내 app.config 파일은 다음과 같습니다.
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<connectionStrings>
<!-- your connection string here -->
</connectionStrings>
</configuration>
그리고 프로젝트에 추가된 참고 자료는 이 세가지입니다.
- 엔터티 프레임워크
- 엔티티 프레임워크.Sql서버
- MySql.Data.독립체.EF6
일부 단계는 쓸모가 없었는지도 모르지만 이제서야 EDMX 파일을 업데이트할 수 있게 되었고, 물론 웹 프로젝트를 빌드하고 실행할 수 있으며 VS는 MySql DLL의 삭제에 영향을 받지 않는 것 같습니다.도움이 되길 바랍니다.
저도 같은 문제가 있었습니다.제 경우에는 다음과 같이 해야 했습니다.
- 모델 추가 마법사를 시작하기 전에 패키지를 추가한 후 프로젝트를 재구성합니다.
- 최신 버전의 엔티티 프레임워크 패키지를 제거하고 버전 6.0.0.0으로 되돌립니다.
- Mysql을 설치하지 않습니다.데이터. 엔티티.Mysql 설치 후 EF6.자료. 실체!!
MySql을 하나만 사용하도록 구성 파일을 변경합니다.Data.MySqlClient 프로바이더는 프로바이더 내부에 있으며 다음 버전이 포함되어 있어야 합니다.
<entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> <providers> <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider> </providers>
그 어떤 대답도 내게 해결해 주지 않았습니다.유일하게 작동하는 것은 MySql을 설치하는 것이었습니다.Data.EntityFramework NuGet 패키지.VS를 다시 시작하고 다시 빌드한 다음 마법사를 통과할 수 있었습니다(VS 2017 15.8.7의 WPF).
VS2013 커뮤니티와 비슷한 문제가 있는데 WinForm이 아니라 ASP입니다.NET MVC. 위의 모든 해결책을 따랐고 내 문제는 여전히 있지만, 그들(특히 하메드)은 나에게 그것을 고칠 수 있는 몇 가지 아이디어를 주었습니다.
그래서 여기로 스크롤하면 아이디어도 얻을 수 있습니다.내가 가지고 있습니다.
- MySQL Connector NET 6.8.4 설치(6.9.5가 작동하지 않는 것 같습니다).
- MySQL을 VS 1.2.3용으로 그대로 두었습니다(1.2.3이 작동했으므로 1.1.1을 설치할 필요가 없음).
- MySQL.data Mysql을 설치했습니다.NuGet의 Data.entities.
- D에서 MySQL.dll을 모두 제거했습니다:\Program Files (x86)\Microsoft Visual Studio 12.0\공통7\IDE\Private Assembly.
- 하메드 말대로 끝.
- 리빌드 솔루션.
- 새 ADO를 추가했습니다.NET 엔티티 모델이 성공적으로 완료되었습니다.
도움이 되길 바랍니다.
지난 2일 동안 몇 시간 동안 고생한 끝에 마침내 도움이 된 것은 모든 코드를 이전 EF5 코드로 되돌리고 ADO를 삭제하는 것입니다.NET Entity Data Model을 선택한 후 Entity Framework 6.0(비활성화됨)을(를).내가 위에서 언급한 것처럼 설치한 최신 mysql 커넥터, 비주얼 스튜디오 플러그인 및 기타 모든 것 때문에 비주얼 스튜디오는 자동으로 Entity Framework 6.0 ADO 엔티티 데이터 모델을 추가했습니다.그런 다음 모든 프로젝트(EntityFramework, mysql.data, mysql.data.data.entity)에서 모든 참조를 수동으로 추가했습니다.EF6 버전 6.9.6)을 사용하면 최종적으로 작동합니다.
저는 ih303 같은 문제가 있었습니다.수정 방법:
-해법 V-SHY
-오류메시지 등이 없으면 마법사는 그냥 사라집니다 -> 다음과 같은 해결책을 수행합니다 (나에게 효과가 있었습니다).
다음을 입력하는 대신:
<entityFramework>
<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>
다음으로 변경합니다.
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
rebuild -> add wizard 등이 작동해야 합니다.
다음에 대한 참조를 제거하여 작동할 수 있었습니다.
MySql.Data.Entity.EF6
MySql.Data
그리고 대신에 나는 Nuget을 설치했습니다.
MySql.Data.독립체
위에서 제거한 프레임워크에 대한 참조를 추가할 뿐만 아니라 프로젝트에서 일부 구성을 변경했습니다.nuget을 설치한 후 프로젝트도 재구축하여 bin 디렉토리에 dll 파일을 추가하였습니다.
이것은 32비트 VS 64비트 데이터베이스 드라이버와 관련이 있는 것 같습니다.
적어도 이 시점에서 x64로 설정을 변경하면 이 오류가 있는 것과 없는 것 사이를 왔다 갔다 할 수 있습니다.아무 CPU나 시도해도 작동이 안 되고, x86을 시도해도 작동이 안 됩니다.
32비트 MySQL 드라이버를 사용할지 64비트 드라이버를 사용할지 어디에서 결정해야 할지 잘 모르겠습니다. 설치 관리자는 둘 다 설치해야 한다고 주장합니다.
(또한 NuGet 패키지를 하나 이상 추가해야 했습니다.MySql.Data
,MySql.Data.Entity
,그리고.MySql.Data.Entities
,게다가EntityFramework
.)
일단 제 프로젝트에 모델을 추가하고 나면 지금까지 문제없이 x86으로 다시 프로젝트를 전환할 수 있었습니다.
ADO 항목을 추가할 때.오라클 연결이 있는 NET Entity Data Model에 "프로젝트가 Entity Framework의 최신 버전을 참조합니다."라는 오류 메시지가 표시됩니다.."
해결 단계가 여기에 있습니다.
ODAC122010과 함께 Oracle ODT를 32비트로 설치
VS2017에서 프로젝트 생성
모든 CPU에서 Active Solution 플랫폼을 32비트로 변경
Open Tools->Nuget Package Manager-> 솔루션용 Nuget 패키지 관리
찾아보기 영역 "ODP" 쓰기 및 Following Program 설치
Oracle, Managed Data Access 및 Oracle.관리되는 데이터 액세스.엔터티 프레임워크
6.Open Tools->Nuget PackageManager-> PackageManager 콘솔
7. 이 Install-Package Entity Framework - 버전 6.1.1을 작성하고 입력합니다.
8.Visual Studio를 다시 시작하여 프로세스를 완료합니다.
9.애플리케이션 재구축
- 새 항목 ADO를 추가합니다.NET 엔티티 데이터 모델
11. 필요한 경우 Oracle에 새 연결 추가(Data Source = Oracle Database(ODP))NET, 관리 드라이버)
12.아무것도 아닙니다.
참고: EF6.1.3은 VS2017 및 Oracle ODT with ODAC122010에서는 작동하지 않습니다.그러나 이 모든 과정을 거쳐 EF를 EF6.1.3으로 변경하였습니다. 하지만 저는 당신에게 조언하지 않습니다.
저는 재설치로 문제가 해결되었습니다.
- 커넥터/넷(버전: 8.0.19)
- 시각 스튜디오용 MySQL (버전: 1.2.9)
그리고 지금은 2017년과 2019년에도 edmx를 생성할 수 있습니다.
저에게 도움이 된 솔루션은 먼저 @V-SHY의 단계를 따르고 설치하는 것이었습니다.MySql.Data.Entity
언급URL : https://stackoverflow.com/questions/22031269/enable-entity-framework-6-for-mysql-c-in-winforms-of-microsoft-visual-studio
'programing' 카테고리의 다른 글
구조물 데이터의 16진수를 가져오는 방법 (0) | 2023.09.15 |
---|---|
SQL Server 테이블에 "마지막으로 수정" 및 "생성" 열을 추가하려면 어떻게 해야 합니까? (0) | 2023.09.10 |
선택한 날짜보다 날짜 범위 필터 및 이력이 적은 레코드 선택 (0) | 2023.09.10 |
Jupyter 노트북에는 두마리의 판다 테이블이 나란히 전시되어 있습니다. (0) | 2023.09.10 |
ASP를 연결합니다.NET to Amazon RDS MariaDB (0) | 2023.09.10 |