Menggunakan MySQL dengan Entity Framework [ditutup]

269

Tidak dapat menemukan apa pun yang relevan tentang Entity Framework / MySQL di Google jadi saya berharap seseorang mengetahuinya.

vintana
sumber
8
terus terang, dukungan mysql untuk LINQ adalah omong kosong! Saya membenturkan kepala saya pada masalah kecil selama satu minggu terakhir: | ...
effkay
1
apakah Anda menggunakan dblinq code.google.com/p/dblinq2007 ?
Sharique

Jawaban:

193

Telah dirilis - Dapatkan konektor MySQL untuk .Net v6.5 - ini memiliki dukungan untuk [Kerangka Kerja Entitas]

Saya menunggu ini sepanjang waktu, meskipun dukungannya dasar, berfungsi untuk sebagian besar skenario dasar interaksi db. Ini juga memiliki integrasi Visual Studio dasar.

UPDATE http://dev.mysql.com/downloads/connector/net/ Dimulai dengan versi 6.7, Connector / Net tidak akan lagi menyertakan integrasi MySQL untuk Visual Studio. Fungsionalitas itu sekarang tersedia di produk terpisah yang disebut MySQL untuk Visual Studio yang tersedia menggunakan Pemasang MySQL untuk Windows (lihat http://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html ).

Vin
sumber
4
Saya pikir saya akan menyebutkan bahwa versi terbaru tersedia di sini (6.2.2 saat ini): mysql.com/downloads/connector/net
Brett Ryan
3
Apakah ini mendukung EF4 dan VS2010? Saya memasang konektor dan mencoba menambahkan koneksi baru di VS2010 tetapi MySQL tidak muncul dalam daftar penyedia
Abhijeet Patel
1
Saya ingin tahu tentang MySQL, EF4 dan VS2010.
Vinicius Rocha
1
Seharusnya jika Anda memiliki konektor terbaru. Saya baru saja memindahkan produk saya ke .NET4 khusus karena dukungan MySQL Entity. Alat dan semuanya berfungsi dengan baik, tetapi masalah besar adalah dukungan mendasar yang disediakannya untuk kueri aktual. Ada beberapa masalah dengan ekspresi lamba yang tidak Anda temui MSSQL
David Anderson
1
Tentu, ada versi baru yang keluar. Sekarang mendukung EF5, versi 6.7.4: dev.mysql.com/downloads/connector/net/#downloads Juga, Karena versi ini, plugin VS dengan server MySQL dan alat-alat lain yang disertakan dibundel dalam satu paket: dev.mysql.com / tech-resource / articles / ...
Nullius
22

Lihat posting saya tentang hal ini.

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

Pattersonc
sumber
Saya memperbaiki penyandian tautan itu - pengguna sekarang dapat mengklik kanan daripada harus menyalin / menempel atau memilih / goto
kͩeͣmͮpͥ ͩ
7
Tautan tidak berfungsi
MüllerDK
2
Anda bisa mendapatkan artikel-artikel dengan tautan ini: pattersonc.com/blog/2009/04
Andy White
Apakah menggunakan MYSQL dengan EF menjadi lebih baik atau masih ada masalah? Jika SQL server lebih disukai adakah yang bisa menunjukkan dengan tepat mengapa SQL server lebih disukai hanya karena itu adalah vendor Microsoft yang sama?
user3508811
7

Ini bukan tentang MS dan apa yang mereka inginkan. Mereka telah menciptakan * sistem terbuka untuk orang lain untuk plug-in 'penyedia' - postgres dan sqlite memilikinya - mysql hanya laggin ... tapi, kabar baik bagi mereka yang tertarik, saya juga mencari ini dan menemukan bahwa Konektor MySql / Net 6.0 akan memilikinya ... Anda dapat memeriksanya di sini:

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


sumber
1
Saya ingin tahu apa arti "awal" ketika mereka mengatakan "dukungan Kerangka Entitas Awal".
vintana
5

Anda membutuhkan penyedia pemetaan untuk MySQL. Itu adalah hal ekstra yang dibutuhkan Kerangka Entitas untuk membuat keajaiban terjadi. Blog ini berbicara tentang penyedia pemetaan lain selain yang disediakan Microsoft. Saya belum menemukan penyebutan MySQL.

Lars Truijens
sumber
Ya kamu benar. Saya berharap ada sesuatu yang siap sekarang.
vintana
2

Vintana,

Tentu saja ada sesuatu yang siap sekarang. http://www.devart.com/products.html - iklan ini komersial (Anda memiliki uji coba 30 hari IIRC). Mereka membuat penyedia menulis hidup, jadi saya kira itu harus cepat dan stabil. Saya tahu perusahaan besar menggunakan penyedia Oracle mereka, bukan Orace dan MS.

aaimnr
sumber
Terima kasih atas tanggapan Anda. @Vintana, Anda dapat menemukan informasi lebih lanjut tentang dotConnect untuk MySQL dan keuntungannya di sini devart.com/dotconnect/mysql . Untuk meningkatkan pekerjaan Anda dengan entitas Entity Framework, kami menyediakan alat canggih untuk pembuatan model visual - Pengembang Entity devart.com/entitydeveloper .
Devart
1

Hati-hati menggunakan konektor .net, Connector 6.6.5 memiliki bug, itu tidak berfungsi untuk memasukkan nilai tinyint sebagai identitas, misalnya:

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

jika Anda mencoba memasukkan objek seperti ini:

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

Anda akan mendapatkan Pengecualian Referensi 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()

Sampai sekarang saya belum menemukan solusi, saya harus mengubah identitas tinyint saya menjadi identitas int unsigned, ini menyelesaikan masalah tetapi ini bukan solusi yang tepat.

Jika Anda menggunakan Connector.net versi lama (saya menggunakan 6.4.4), Anda tidak akan mengalami masalah ini.

Jika seseorang tahu tentang solusinya, silakan hubungi saya.

Bersulang!

Oware

Sadarlah
sumber
Kesalahan dilemparkan karena p adalah nol. Anda harus membuat instance kosong baru dari objek terlebih dahulu. Yaitu Orang p = Orang baru (); bukan Orang p; Jadi:Person p = new Person(){Name = "Oware"}; context.Person.Add(p); context.SaveChanges();
Dave
maaf saya lupa menambahkan baris baru, walaupun saya menambahkan baris baru, kesalahan masih muncul
oware
Bug diperbaiki di versi 6.8.2. bugs.mysql.com/bug.php?id=70888 Connector / Net 6.8.3 dirilis. dev.mysql.com/downloads/connector/net
Der_Meister
0

Jika Anda tertarik menjalankan Entity Framework dengan MySql di mono / linux / macos, ini mungkin membantu https://iyalovoi.wordpress.com/2015/04/04/entity-framework-with-mysql-on-mac-os/

Igor Yalovoy
sumber
Apakah menggunakan MYSQL dengan EF menjadi lebih baik atau masih ada masalah? Jika SQL server lebih disukai adakah yang bisa menunjukkan dengan tepat mengapa SQL server lebih disukai hanya karena itu adalah vendor Microsoft yang sama?
user3508811
Saya tidak yakin bagaimana keadaannya saat ini, tetapi kami memiliki pengalaman yang sangat buruk karena kurangnya fitur dan secara keseluruhan tidak konsisten. MS MSQL jelas lebih disukai, karena Microsoft menempatkan tumpukan itu sendiri terlebih dahulu.
Igor Yalovoy