MySQL'i Entity Framework ile kullanma [kapalı]


269

Google'da Entity Framework / MySQL hakkında alakalı bir şey bulamıyorum, bu yüzden birinin bunu bilmesini umuyorum.


8
Açıkçası, LINQ için mysql desteği bok! Ben son bir hafta boyunca küçük konularda başımı beceriyor: | ...
effkay

1
dblinq code.google.com/p/dblinq2007 kullandınız mı?
Sharique

Yanıtlar:


193

Bu serbest oldu - Get Net v6.5 için MySQL konektörü - Bu desteği vardır [Varlık Framework]

Destek temel olsa da, db etkileşimi en temel senaryoları için çalışır, tüm zaman boyunca bekliyordum. Ayrıca temel Visual Studio entegrasyonu vardır.

GÜNCELLEME http://dev.mysql.com/downloads/connector/net/ 6.7 sürümünden itibaren Bağlayıcı / Net artık Visual Studio için MySQL içermeyecektir. Bu işlevsellik artık Windows için MySQL Yükleyicisi kullanılarak kullanılabilen Visual Studio için MySQL adlı ayrı bir üründe kullanılabilir (bkz. Http://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html ).


4
En son sürümün burada mevcut olduğunu söyleyebilirim
Brett Ryan

3
Bu EF4 ve VS2010'u destekliyor mu? Bağlayıcıyı kurdum ve VS2010'a yeni bir bağlantı eklemeye çalıştım, ancak MySQL sağlayıcılar listesinde görünmüyor
Abhijeet Patel

1
MySQL, EF4 ve VS2010'u merak ediyorum.
Vinicius Rocha

1
En son bağlayıcıya sahip olmanız gerekir. Ürünümü özellikle MySQL Entity desteği nedeniyle .NET4'e taşıdım. Araçlar ve her şey iyi çalışıyor, ancak asıl sorun gerçek sorgulama için sağladığı destek. Lamba ifadelerinde MSSQL ile karşılaşmadığınız birkaç sorun var
David Anderson

1
Tabii ki, yeni versiyonlar çıkıyor. Şimdi EF5, sürüm 6.7.4'ü destekliyor: dev.mysql.com/downloads/connector/net/#downloads Ayrıca, Bu sürümden bu yana, MySQL sunucusu ve diğer araçları içeren VS eklentisi tek bir pakette paketlenmiştir: dev.mysql.com / tech-resources /
article

22

Bu bağlantının kodlamasını düzelttim - kullanıcılar kopyalamak / yapıştırmak veya seçmek / goto seçmek yerine sağ tıklayabilirler
kͩeͣmͮpͥ ͩ 18:11

7
Bağlantı çalışmıyor
MüllerDK

2
Bu bağlantıyla makalelere ulaşabilirsiniz: pattersonc.com/blog/2009/04
Andy White

EF ile MYSQL kullanmak daha iyi var mı veya hala sorunlar var mı? SQL sunucusu tercih edilirse, herkes tam olarak neden aynı sunucu Microsoft çünkü SQL sunucusu tercih olduğunu kesin olarak belirleyebilir?
user3508811



5

MySQL için bir harita sağlayıcısına ihtiyacınız olacaktır. Bu, Entity Framework'ün sihri gerçekleştirmek için ihtiyaç duyduğu ekstra bir şey. Bu blog , Microsoft'un sağladığı harita dışında diğer harita sağlayıcılarından bahsediyor. MySQL'den bahsetmedim.


Evet, haklısın. Şu an hazır bir şey olmasını umuyordum.
vintana

2

Vintana,

Tabii şimdi hazır bir şey var. http://www.devart.com/products.html - ticari olsa da (30 günlük bir deneme IIRC'niz var). Yaşayan bir yazı sağlayıcısı yapıyorlar, bu yüzden hızlı ve kararlı olmalı. Orace ve MS yerine Oracle sağlayıcılarını kullanan gerçekten büyük şirketler biliyorum.


Cevabınız için teşekkürler. @Vintana, MySQL için dotConnect ve avantajları hakkında daha fazla bilgiyi burada devart.com/dotconnect/mysql bulabilirsiniz . Entity Framework varlıkları ile çalışmanızı geliştirmek için görsel model oluşturma için gelişmiş bir araç sunuyoruz - Entity Developer devart.com/entitydeveloper .
Devart

1

Bağlayıcı .net, Bağlayıcı 6.6.5 kullanırken bir hata var dikkatli olun, kimlik olarak tinyint değerleri eklemek için çalışmıyor, örneğin:

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

böyle bir nesne eklemeye çalışırsanız:

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

Bir Boş Referans İstisnası alacaksınız:

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

Şimdiye kadar bir çözüm bulamadım, minik kimliğimi imzasız int kimliğe değiştirmek zorunda kaldım, bu sorunu çözdü, ancak bu doğru çözüm değil.

Connector.net'in eski bir sürümünü kullanıyorsanız (6.4.4 kullandım) bu sorunla karşılaşmazsınız.

Birisi çözümü biliyorsa, lütfen benimle iletişime geçin.

Şerefe!

Oware


P boş olduğu için hata atılır. Önce nesnenin yeni bir boş örneğini oluşturmanız gerekir. Yani Kişi p = yeni Kişi (); Kişi p değil; Yani:Person p = new Person(){Name = "Oware"}; context.Person.Add(p); context.SaveChanges();
Dave

Üzgünüm yeni satırı eklemeyi unuttum, yeni satırı
eklesem

Hata 6.8.2 sürümünde düzeltildi. bugs.mysql.com/bug.php?id=70888 Bağlayıcı / Net 6.8.3 yayınlandı. dev.mysql.com/downloads/connector/net
Der_Meister



0

Entity Framework'ü MySql ile mono / linux / macos üzerinde çalıştırmak istiyorsanız, bu yardımcı olabilir https://iyalovoi.wordpress.com/2015/04/06/entity-framework-with-mysql-on-mac-os/


EF ile MYSQL kullanmak daha iyi var mı veya hala sorunlar var mı? SQL sunucusu tercih edilirse, herkes tam olarak neden aynı sunucu Microsoft çünkü SQL sunucusu tercih olduğunu kesin olarak belirleyebilir?
user3508811

Şu anda nasıl olduğundan emin değilim, ancak özelliklerin eksikliği ve genel olarak tutarsız olması nedeniyle oldukça kötü bir deneyim yaşadık. MS MSQL kesinlikle tercih edilir, çünkü Microsoft önce kendi yığınını koyar.
Igor Yalovoy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.