Entity Framework와 함께 MySQL 사용하기


269

Google의 Entity Framework / MySQL과 관련된 내용을 찾을 수 없으므로 다른 사람이 알고 있기를 바랍니다.


8
솔직히 말해서, LINQ에 대한 mysql 지원은 쓰레기입니다! 지난 일주일 동안 사소한 문제에 대해 머리를 두드리고 있습니다. | ...
effkay

1
dblinq code.google.com/p/dblinq2007을 사용 했 습니까?
Sharique

답변:


193

출시 된 것 - 가져 오기 닷넷 V6.5에 대한 MySQL의 커넥터 -이에 대한 지원을하고있다 [엔티티 프레임 워크]

지원은 기본이지만 대부분의 기본 DB 상호 작용 시나리오에서 작동합니다. 기본 Visual Studio 통합도 있습니다.

업데이트 http://dev.mysql.com/downloads/connector/net/ 버전 6.7부터 Connector / Net에는 더 이상 MySQL for Visual Studio 통합이 포함되지 않습니다. 이 기능은 이제 Windows 용 MySQL 설치 프로그램 ( http://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html 참조 ) 을 사용하여 Visual Studio 용 MySQL이라는 별도의 제품에서 사용할 수 있습니다 .


4
최신 버전을 여기 (현재 6.2.2)에서 사용할 수 있다고 언급했습니다. mysql.com/downloads/connector/net
Brett Ryan

3
이것이 EF4와 VS2010을 지원합니까? 커넥터를 설치하고 VS2010에서 새 연결을 추가하려고했지만 MySQL이 공급자 목록에 표시되지 않습니다
Abhijeet Patel

1
MySQL, EF4 및 VS2010에 대해 궁금합니다.
Vinicius Rocha

1
최신 커넥터가 있어야합니다. MySQL 엔터티 지원으로 인해 제품을 .NET4로 옮겼습니다. 도구와 모든 것이 제대로 작동하지만 큰 문제는 실제 쿼리에 제공되는 기본 지원입니다. MSSQL에서 다루지 않는 람바 식에는 몇 가지 문제가 있습니다.
David Anderson

1
물론 새로운 버전이 나옵니다. 이제 EF5, 버전 6.7.4 지원 : dev.mysql.com/downloads/connector/net/#downloads 또한이 버전부터는 MySQL 서버 및 기타 도구가 포함 된 VS 플러그인이 하나의 패키지 ( dev.mysql.com
Nullius

22

해당 링크의 인코딩을 수정했습니다. 이제 사용자는 복사 / 붙여 넣기 또는 선택 / 이동하지 않고 바로 클릭 할 수 있습니다.
kͩeͣmͮpͥ ͩ

7
링크가 작동하지 않습니다
MüllerDK

2
이 링크를 사용하여 기사를 얻을 수 있습니다 : pattersonc.com/blog/2009/04
Andy White

MYF를 EF와 함께 사용하는 것이 더 나아지거나 여전히 문제가 있습니까? SQL 서버를 선호하는 경우 누구나 동일한 공급 업체 Microsoft로 인해 SQL 서버가 선호되는 이유를 정확하게 찾을 수 있습니까?
user3508811


7

이것은 MS와 그들이 원하는 것에 관한 것이 아닙니다. 그들은 다른 사람들이 '제공자'를 플러그인 할 수있는 개방형 시스템을 만들었습니다-postgres와 sqlite는 그것을 가지고 있습니다-mysql은 너무 느립니다 ... / Net 6.0에 포함되어 있습니다. 여기에서 확인할 수 있습니다.

http://www.upfromthesky.com/blog/post/2009/03/24/MySql-Supports-the-Entity-Framework.aspx


1
"초기 엔티티 프레임 워크 지원"이라고 말했을 때 "초기"가 무엇을 의미하는지 궁금합니다.
vintana

5

MySQL 용 매핑 공급자가 필요합니다. 이는 Entity Framework가 마법을 실현하는 데 필요한 추가 사항입니다. 이 블로그 에서는 Microsoft에서 제공하는 것 이외의 다른 매핑 공급자에 대해 설명합니다. MySQL에 대한 언급이 없습니다.


그래, 당신 말이 맞아. 지금 준비가 되길 바랐습니다.
vintana

2

빈 타나,

물론 지금 준비가되었습니다. http://www.devart.com/products.html- 비록 상업적입니다 (30 일 평가판 IIRC가 있습니다). 그들은 살아있는 글을 쓰는 제공자를 만들어서, 빠르고 안정적이어야한다고 생각합니다. Orace 및 MS 대신 Oracle 공급자를 사용하는 대기업을 알고 있습니다.


당신의 응답을 주셔서 감사합니다. @Vintana, 당신은 여기에 MySQL과 장점에 대한 dotConnect에 대한 자세한 정보를 찾을 수 있습니다 devart.com/dotconnect/mysql . Entity Framework 엔터티 작업을 개선하기 위해 비주얼 모델 생성을위한 고급 도구 인 Entity Developer devart.com/entitydeveloper를 제공 합니다.
Devart

1

Connector .net 사용에주의하십시오. Connector 6.6.5에는 버그가 있습니다. 예를 들어 tinyint 값을 ID로 삽입 할 수 없습니다.

create table person(
    Id tinyint unsigned primary key auto_increment,
    Name varchar(30)
);

다음과 같은 객체를 삽입하려고하면 :

Person p;
p = new Person();
p.Name = 'Oware'
context.Person.Add(p);
context.SaveChanges();

Null 참조 예외가 발생합니다.

Referencia a objeto no establecida como instancia de un objeto.:
   en MySql.Data.Entity.ListFragment.WriteSql(StringBuilder sql)
   en MySql.Data.Entity.SelectStatement.WriteSql(StringBuilder sql)
   en MySql.Data.Entity.InsertStatement.WriteSql(StringBuilder sql)
   en MySql.Data.Entity.SqlFragment.ToString()
   en MySql.Data.Entity.InsertGenerator.GenerateSQL(DbCommandTree tree)
   en MySql.Data.MySqlClient.MySqlProviderServices.CreateDbCommandDefinition(DbProviderManifest providerManifest, DbCommandTree commandTree)
   en System.Data.Common.DbProviderServices.CreateCommandDefinition(DbCommandTree commandTree)
   en System.Data.Common.DbProviderServices.CreateCommand(DbCommandTree commandTree)
   en System.Data.Mapping.Update.Internal.UpdateTranslator.CreateCommand(DbModificationCommandTree commandTree)
   en System.Data.Mapping.Update.Internal.DynamicUpdateCommand.CreateCommand(UpdateTranslator translator, Dictionary`2 identifierValues)
   en System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator translator, EntityConnection connection, Dictionary`2 identifierValues, List`1 generatedValues)
   en System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter)
   en System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager entityCache)
   en System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options)
   en System.Data.Entity.Internal.InternalContext.SaveChanges()
   en System.Data.Entity.Internal.LazyInternalContext.SaveChanges()
   en System.Data.Entity.DbContext.SaveChanges()

지금까지 해결책을 찾지 못했을 때, tinyint ID를 서명되지 않은 int identity로 변경해야 문제가 해결되었지만 이것이 올바른 해결책은 아닙니다.

이전 버전의 Connector.net (6.4.4 사용)을 사용하면이 문제가 발생하지 않습니다.

누군가 솔루션에 대해 알고 있다면 저에게 연락하십시오.

건배!

자각


p가 널이므로 오류가 발생합니다. 먼저 객체의 빈 인스턴스를 새로 만들어야합니다. 즉 Person p = new Person (); 사람 p가 아님; 그래서 :Person p = new Person(){Name = "Oware"}; context.Person.Add(p); context.SaveChanges();
데이브

죄송합니다. 새 줄을 추가하는 것을 잊었습니다. 새 줄을 추가해도 오류가 계속 나타납니다.
oware

버그는 버전 6.8.2에서 수정되었습니다. bugs.mysql.com/bug.php?id=70888 커넥터 / Net 6.8.3이 릴리스되었습니다. dev.mysql.com/downloads/connector/net
Der_Meister



0

mono / linux / macos에서 MySql을 사용하여 Entity Framework를 실행하려는 경우 https://iyalovoi.wordpress.com/2015/04/06/entity-framework-with-mysql-on-mac-os/ 가 도움이 될 수 있습니다.


MYF를 EF와 함께 사용하는 것이 더 나아지거나 여전히 문제가 있습니까? SQL 서버를 선호하는 경우 누구나 동일한 공급 업체 Microsoft로 인해 SQL 서버가 선호되는 이유를 정확하게 찾을 수 있습니까?
user3508811

현재 상황이 확실하지 않지만 기능이 부족하고 전반적으로 일관성이 없기 때문에 경험이 매우 좋지 않았습니다. MS MSQL은 Microsoft가 자체 스택을 최우선으로 생각하기 때문에 확실히 선호됩니다.
Igor Yalovoy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.