2013-11-25 5 views
20

최근에 MariaDB가 Google에 따라 MySQL has unfriendly pricing for clustered/enterprise version 이래로 MySQL에 대한 드롭 오프 대체품이라는 뉴스를 읽었습니다.Entity Framework에서 MariaDB 사용하기

이제 Google에서 MariaDB와 관련된 내용을 찾을 수 없으므로 누군가 알고 싶습니다. MySQL driver for this since it is 100% compatible을 사용해도 되나요? 이견있는 사람?

업데이트

난 그냥 그것에 대한 RedHat is also switching from MySQL to MariaDB은 기본 데이터베이스 관리 시스템의 사실을 발견했다. 따라서 현재 프로젝트에서 MariaDB로 전환해야합니다.

+0

가 보는 시도 확실히 가치가없는, 그들은하지만 MySQL의의 와이어 프로토콜과의 호환성을 깰 미친 것. 전체 클라이언트 소프트웨어 제품군을 유지 관리하는 것보다 호환성을 유지하는 것이 더 쉽습니다. 그들은 또한 문서 (https://mariadb.com/kb/en/mariadb-versus-mysql-compatibility/)에서이를 명시 적으로 말하고 있습니다. – millimoose

+0

MariaDB와 함께 RedHat 서버를 가상화 할 수있는 리소스가 없습니다. 내가 시도한 것은 RedHat 서버상의 MySQL이다. –

+0

VirtualBox를 다운로드하고 CentOS 및 MariaDB를 설치하고 해당 DB에서 샘플 프로젝트를 가리킬 수 있습니까? – millimoose

답변

7

MariaDB 10을 Entity Framework와 함께 사용할 수 있었지만 주로 MySQL 도구가 약간 버그가있어서 약간의 작업이 필요했습니다.

비주얼 스튜디오 2,012분의 2,010에서의 MySQL/MariaDB로 작업하려면, 당신은 MySQL Installer를 사용하여 MySQL for Visual Studio을 설치해야합니다. 나는 단지 커넥터와 확장 기능을 다운로드하기를 원했기 때문에 웹 버전을 사용했다. 일단 이렇게하면 MariaDB에 연결을 추가하고 EF 모델을 만들 수 있습니다.

그러나 코드를 실행하는 데 충분하지 않습니다. 먼저 NuGet을 사용하여 MySQL Connector를 추가해야합니다.

유감스럽게도, Visual Studio 용 MySQL은 이전 공급자 버전 (here)에 대한 참조를 추가하고 최신 버전을로드 할 수 없습니다. 이 문제를 해결하려면, 내의 app.config에 다음 섹션을 추가 :

<system.data> 
    <DbProviderFactories> 
    <remove invariant="MySql.Data.MySqlClient"/> 
    <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.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> 
    </DbProviderFactories> 
</system.data> 

이 새로운 하나 기존의 참조를 대체합니다. 나는 remove 요소에

<remove invariant="MySql.Data.MySqlClient"/> 

하지

<remove name="MySql Data Provider"/> 

를 사용합니다. 현재

이, 비주얼 스튜디오에 대한 MySQL의 2013

UPDATE 비주얼 스튜디오에서 지원되지 않습니다 - 그것은 예를 들어 2013 년에했던 같은 문제로 2017 년

커넥터/.NET은 본질적으로 정체 없음 진정한 비동기 호출. "비동기"호출은 가짜입니다. 그들은 별개의 스레드에서 실행되어 async이라는 매우 목적을 뛰어 넘습니다. 이것만으로도 개의 스레드/CPU 수를 사용하여 가능한 많은 요청을 서버에 전달하려는 웹 응용 프로그램에는 적합하지 않습니다.

.NET 핵심 지원에 대해 신경 쓰지 마십시오.

그래서 지난 몇 년 동안 사람들은 진정한 비동기 공급자를 구축했습니다. 더 인기있는 것들 중 일부는 다음과 같습니다

  • MySqlConnector는 .NET 에 대한 진정한 비동기 제공자를 제공합니다.NET 코어
  • Pomelo은 약 100K NuGet 각 빈번한 버전 및 활성 유지 보수 다운로드로 MySQLConnector

위에 EF 코어 지원을 제공합니다.

그들은 "공식적인"하지만, MariaDB는 정치적 포크 그대로

+0

현재 지원이 이루어지고 있지만 (VS2013 및 MySQL) 고통이 있습니다. 나는 2012 년 EF를 작성한 다음 2013 년을 개발에 사용했습니다. – Noctis

+0

그리고 나서 당신은 GPL 어플리케이션을 가지고 있습니다. - GPL (LGPL 아님) MySQL 커넥터에 대한 상용 라이센스가없는 경우. –

+0

@StefanSteiger "공식"커넥터에는 사람들이 지난 3 년 동안 자신의 프로젝트를 시작한 많은 심각한 문제 (예 : 가짜 비동기 호출)가 있습니다. [MySqlConnector] (https://github.com/mysql-net/MySqlConnector) 은 가장 인기있는 ADO.NET 공급자 인 것처럼 보입니다. [Pomelo] (https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql) EF 지원을 제공합니다. * Oracle *은 MySQL에 대해별로 신경 쓰지 않습니다. (.NET 용) –

관련 문제