.NET 코어 프로젝트 (.NET 4.6을 대상으로합니다)에서 EF Core와 EF 6을 모두 사용해야하는 곳이 있습니다. MySQL을 사용하기 때문에 내 project.json
이 뭔가 보입니다 이 같은 :.NET 핵심 프로젝트 .json에서 종속성 충돌 처리
{
...
"dependencies": {
"EntityFramework": "6.1.3", // For EF 6
"MySql.Data.Entity": "6.9.9", // For EF 6 and MySQL
"Pomelo.EntityFrameworkCore.MySql": "1.1.0", // For EF Core
...
},
"frameworks": {
"net461": {}
},
...
}
이 같은 클래스 MySqlConnection
를 사용하려고하면 문제는 다음과 같습니다
var connection = new MySqlConnection(connectionString);
내가받을 다음과 같은 오류 :
The type 'MySqlConnection' exists in both
'MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' and
'MySqlConnector, Version=0.7.2.0, Culture=neutral, PublicKeyToken=null'
어떤 라이브러리에서 정확하게 MySqlConnection
을 사용할지 지정하는 방법이 있습니까? 아니면이를 해결할 다른 방법이 있습니까? 우리는 내가 EF 6 필요
ASP.NET Core Identity
(전용 EF 코어를 사용하고 다른 .NET 핵심 라이브러리)을 사용하기 때문에 우리는 그 순간이 발견 이후는 EF 코어를 필요로
- 을 :
이러한 내 제약입니다 MySQL을위한 EF 핵심 구현은 우리가 필요로하는 모든 것에 적합합니다.
- MySQL을 사용하고 있으므로 EF 6에는
MySql.Data.Entity
을, EF 코어에는Pomelo.EntityFrameworkCore.MySql
을 사용해야합니다. 우리는 EF Core를 위해 다른 라이브러리를 사용하려고 시도했지만 많은 버그가 있습니다. Pomelo가 가장 안정적인 것으로 나타났습니다.
편집 : 내가 생각하는 이유는 그 네임 스페이스/클래스 MySql.Data.MySqlClient.MySqlConnection
을 가지고 있으며, 그래서 MySql.Data.Entity
을 수행 Pomelo.EntityFrameworkCore.MySql
참조 MySqlConnector
.
#if NET461
// put your EF usings for .NET 4.6.1 here
#else
// put your EFCore usings for .NET Core
#endif
public interface IDatabase
{
void Initialize();
DbContext GetContext();
}
그런 다음 IDatabase
인터페이스에서 상속이 객체를 생성 :
전체 네임 스페이스를 사용하는 데 도움이 희망? – DavidG
@DavidG 전체 네임 스페이스는'MySql.Data.MySqlClient.MySqlConnection'이지만'MySql.Data.MySqlClient'가 두 패키지에 모두 존재하기 때문에 작동하지 않습니다. – Joel
코드를 필요한 클래스의 단일 버전 만 참조하는 자체 프로젝트로 옮겨서이 문제를 해결할 수 있습니다. – DavidG