Verwenden von MySQL mit Entity Framework [geschlossen]

269

Ich kann bei Google nichts Relevantes über Entity Framework / MySQL finden, also hoffe ich, dass jemand davon weiß.

vintana
quelle
8
Ehrlich gesagt ist MySQL-Unterstützung für LINQ Mist! Ich habe in der letzten Woche mit kleinen Problemen zu kämpfen: | ...
effkay
1
Hast du dblinq code.google.com/p/dblinq2007 verwendet ?
Sharique

Antworten:

193

Es wurde veröffentlicht - Holen Sie sich den MySQL-Connector für .Net v6.5 - dies unterstützt [Entity Framework]

Ich habe die ganze Zeit darauf gewartet, obwohl die Unterstützung grundlegend ist, funktioniert sie für die meisten grundlegenden Szenarien der Datenbankinteraktion. Es hat auch grundlegende Visual Studio-Integration.

UPDATE http://dev.mysql.com/downloads/connector/net/ Ab Version 6.7 enthält Connector / Net die Integration von MySQL für Visual Studio nicht mehr. Diese Funktionalität ist jetzt in einem separaten Produkt namens MySQL für Visual Studio verfügbar, das mit dem MySQL Installer für Windows verfügbar ist (siehe http://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html ).

Vin
quelle
4
Ich dachte, ich würde erwähnen, dass die neueste Version hier verfügbar ist (aktuelle Version 6.2.2): mysql.com/downloads/connector/net
Brett Ryan
3
Unterstützt dies EF4 und VS2010? Ich habe den Connector installiert und versucht, eine neue Verbindung in VS2010 hinzuzufügen, aber MySQL wird nicht in der Liste der Anbieter angezeigt
Abhijeet Patel
1
Ich bin neugierig auf MySQL, EF4 und VS2010.
Vinicius Rocha
1
Es sollte, wenn Sie den neuesten Anschluss haben. Ich habe mein Produkt gerade wegen der Unterstützung von MySQL Entity auf .NET4 verschoben. Die Tools und alles funktionieren einwandfrei, aber das große Problem ist die zugrunde liegende Unterstützung für die eigentliche Abfrage. Es gibt einige Probleme mit Lamba-Ausdrücken, auf die Sie mit MSSQL nicht stoßen
David Anderson
1
Natürlich kommen neue Versionen heraus. Unterstützt jetzt EF5, Version 6.7.4: dev.mysql.com/downloads/connector/net/#downloads Seit dieser Version ist das VS-Plugin mit MySQL-Server und anderen enthaltenen Tools in einem Paket enthalten: dev.mysql.com / tech-resources / articles /…
Nullius
22

Schauen Sie sich meinen Beitrag zu diesem Thema an.

http://pattersonc.com/blog/index.php/2009/04/01/using-mysql-with-entity-framework-and-aspnet-mvc-–-part-i/

pattersonc
quelle
Ich habe die Kodierung dieses Links
korrigiert
7
Link funktioniert nicht
MüllerDK
2
Sie können zu den Artikeln mit diesem Link gelangen: pattersonc.com/blog/2009/04
Andy White
Ist die Verwendung von MYSQL mit EF besser geworden oder gibt es immer noch Probleme? Wenn SQL Server vorzuziehen ist, kann jemand genau bestimmen, warum SQL Server vorzuziehen ist, nur weil es derselbe Anbieter von Microsoft ist?
user3508811
7

Hier geht es nicht um MS und was sie wollen. Sie haben ein * offenes System für andere geschaffen, um 'Anbieter' anzuschließen - Postgres und SQLite haben es - MySQL ist nur eine Verzögerung ... aber gute Nachrichten für Interessierte, auch ich habe danach gesucht und festgestellt, dass der MySQL-Connector / Net 6.0 wird es haben ... Sie können es hier überprüfen:

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


quelle
1
Ich frage mich, was "initial" bedeutet, als sie "Initial Entity Framework support" sagten.
Vintana
5

Sie benötigen einen Mapping-Anbieter für MySQL. Das ist eine zusätzliche Sache, die das Entity Framework benötigt, um die Magie zu verwirklichen. In diesem Blog geht es um andere Mapping-Anbieter als den, den Microsoft anbietet. Ich habe keine Erwähnungen von MySQL gefunden.

Lars Truijens
quelle
Ja, du hast recht. Ich hatte gehofft, dass gerade etwas fertig ist.
Vintana
2

Vintana,

Natürlich ist jetzt etwas fertig. http://www.devart.com/products.html - es ist zwar kommerziell (Sie haben eine 30-Tage-Testversion IIRC). Sie verdienen ihren Lebensunterhalt mit dem Schreiben von Anbietern, daher denke ich, dass es schnell und stabil sein sollte. Ich kenne wirklich große Unternehmen, die ihren Oracle-Anbieter anstelle von Orace- und MS-Anbietern verwenden.

aaimnr
quelle
Danke für Ihre Antwort. @Vintana, weitere Informationen zu dotConnect für MySQL und seinen Vorteilen finden Sie hier devart.com/dotconnect/mysql . Um Ihre Arbeit mit Entity Framework-Entitäten zu verbessern, bieten wir ein erweitertes Tool für die visuelle Modellerstellung - Entity Developer devart.com/entitydeveloper .
Devart
1

Seien Sie vorsichtig mit Connector .net, Connector 6.6.5 hat einen Fehler, es funktioniert nicht zum Einfügen von tinyint-Werten als Identität, zum Beispiel:

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

Wenn Sie versuchen, ein Objekt wie folgt einzufügen:

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

Sie erhalten eine Nullreferenzausnahme:

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()

Bis jetzt habe ich keine Lösung gefunden. Ich musste meine tinyint-Identität in unsigned int identity ändern. Dies löste das Problem, aber dies ist nicht die richtige Lösung.

Wenn Sie eine ältere Version von Connector.net verwenden (ich habe 6.4.4 verwendet), tritt dieses Problem nicht auf.

Wenn jemand von der Lösung weiß, kontaktieren Sie mich bitte.

Prost!

Oware

Vorsicht
quelle
Der Fehler wird ausgelöst, weil p null ist. Sie müssen zuerst eine neue leere Instanz des Objekts erstellen. Dh Person p = neue Person (); nicht Person p; Also:Person p = new Person(){Name = "Oware"}; context.Person.Add(p); context.SaveChanges();
Dave
Es tut mir leid, dass ich vergessen habe, die neue Zeile hinzuzufügen, auch wenn ich die neue Zeile hinzufüge. Der Fehler wird weiterhin
angezeigt
Der Fehler wurde in Version 6.8.2 behoben. bugs.mysql.com/bug.php?id=70888 Connector / Net 6.8.3 wird veröffentlicht. dev.mysql.com/downloads/connector/net
Der_Meister
0

Wenn Sie Entity Framework mit MySql unter mono / linux / macos ausführen möchten, ist dies möglicherweise hilfreich. Https://iyalovoi.wordpress.com/2015/04/06/entity-framework-with-mysql-on-mac-os/

Igor Yalovoy
quelle
Ist die Verwendung von MYSQL mit EF besser geworden oder gibt es immer noch Probleme? Wenn SQL Server vorzuziehen ist, kann jemand genau bestimmen, warum SQL Server vorzuziehen ist, nur weil es derselbe Anbieter von Microsoft ist?
user3508811
Ich bin mir nicht sicher, wie es momentan ist, aber wir hatten ziemlich schlechte Erfahrungen, da es an Funktionen mangelte und es insgesamt inkonsistent war. MS MSQL ist definitiv vorzuziehen, da Microsoft seinen eigenen Stack an die erste Stelle setzt.
Igor Yalovoy