Çeşitli veritabanları için Entity Framework sağlayıcılarının listesi


82

Hangi sağlayıcılar var ve bunları kullanma deneyiminiz

Tüm olası yerel .NET Framework Entity Framework sağlayıcılarının yanı sıra varsayılan LINQ2Entities (MS SQL için MS'den) ile karşılaştırıldığında sınırlamaları hakkında bilgi edinmek istiyorum . Aynı veritabanı için daha fazlası varsa daha da iyidir. Bana söyle ve bu yazıyı bu listeyle güncelleyeceğim.

Doğrudan bu gönderiye başka sağlayıcılar eklemekten veya bir yanıt vermekten çekinmeyin; diğerleri (ben dahil) bunu listeye ekleyecektir.

Entity Framework 1

Microsoft SQL Server Standard / Enterprise / Express

Microsoft SQL Server CE (Kompakt Sürüm)

  • Herhangi bir sağlayıcı?

MySQL

  • MySQL Connector (sürüm 6.0 beri) - kullanırken sorunlar hakkında okudum Skip(), Take()ve Sort()aynı ifade ağacında - girişine herkes karşılama onların deneyim / bilgi bu ilgili.

    Not : MySQL Bağlayıcısı / NET Visual Studio Entegrasyonu, Visual Studio'nun Express Sürümlerinde desteklenmez; bu, MySQL veritabanlarını Veritabanı gezgini penceresinde görüntüleyemeyeceğiniz veya Visual Studio sihirbazı iletişim kutuları aracılığıyla bir MySQL veri kaynağı ekleyemeyeceğiniz anlamına gelir. Bazı kullanıcılar bunun, Visual Studio Express içinde Entity Framework ve MySQL kullanma yeteneklerini sınırladığını görebilir).

  • MySQL için Devart dotConnect - okuduğum MySql konektörüne benzer sorunlar ve her ikisi de bunun için MS'i suçlamaya çalışıyor [bu sorunların çözülmesi gerekiyor ]

SQLite

PostgreSQL

Oracle

DB2

Sybase

Informix

Firebird

Sağlayıcı Sarmalayıcıları

Entity Framework 4 ( beta )

Microsoft SQL Sunucusu

  • Microsoft'un Linq to Entities 4 - .net 4.0 ve Visual Studio 2010 ile birlikte gelir; şimdiye kadar EF4 için tek sağlayıcı

MySQL

SQLite

PostgreSQL

Oracle

Microsoft SQL Server Analiz Hizmetleri (SSAS)


2
Herhangi biri - herhangi bir InMemory sağlayıcısı var mı? Elbette mevcut seçenekler büyük ölçüde azalacak .. ama bir şey hiç yoktan iyidir, değil mi?
Pure.Krome

sqlite, otomatik testler için mükemmel, hızlı, hafif ve neredeyse tam özellikli bir bellek içi db seçeneğine sahiptir.
Jason Meckley

1
Eğlenceli gerçek: Bu, SO ile ilgili 5 veya daha fazla yanıtı olan ve mevcut tüm yanıtların toplam puanının soru puanının 1 / 3'ünden az olduğu birkaç sorudan biridir. :)
dotNET

Yanıtlar:


3

DB2 çalışacaktır, ancak hepimizin kabul ettiği kullanıma hazır .NET özelliklerinden bazılarını kullanmak istiyorsanız (üyelik ve rol sağlayıcıları düşünün), elinizde epey bir işiniz olacak. DB2, Depolanan Yordamlarla pek iyi sonuç vermez, bu nedenle birçok parametreleştirilmiş satır içi SQL'e de bakıyorsunuz.

Ayrıca IBM'in sağlayıcısıyla bazı performans sorunları yaşadım. DataDirect adlı bir şirketten temin edilebilen başka bir sağlayıcı var. Daha performanslı görünüyor, ancak size pahalıya mal olacak. Dışa dönük bir web sitesi gibi, hızın önemli olduğu bir şey için, maliyet muhtemelen bir sorun olmayacaktır.

Başka bir platform üzerinde inşa ediyorsanız DB2'nin harika bir sistem olduğundan eminim, ancak gerçekten .NET ile iyi oynamak için tasarlanmamıştır. DB2 ile evli değilseniz, başka yere bakarım.


3

DB2'nin henüz EF 4 ile çalıştığını düşünmüyorum. Varsa, birisi lütfen beni düzeltin ve nasıl yapıldığını söyleyin. DB2 sağlayıcılarının Veri Kaynağı iletişim kutularında görünmesini sağlayamıyorum.


1
Üstteki liste, yine de EF4 için DB2 desteğini belirtmiyor.
Robert Koritnik


2

IBM'in Veri Sunucusu Sağlayıcısı, onu daha karmaşık sorgu senaryoları için rahatsız edici ve kırılgan hale getiren bazı sınırlamalar içerir. Ayrıca, EDMX tasarımcısı "informix. *" Ön ekli Informix tablolarıyla çalışmaz. Buraya Bakın: bağlantı metni


2

SQLite için System.Data.SQLite eksik . Açık kaynak ve tecrübelerime göre oldukça güvenilir. Bildiğim kadarıyla SQL Server dışındaki veritabanları için ilk EF sağlayıcılarından biriydi


2

Devart sağlayıcısında "Atla / Al ve sipariş verme" sorunları birkaç ay önce düzeltildi.

EF4 desteği hakkında bazı notlar
Şu anda Visual Studio Beta 1 ve EF4 Beta 1 için destek sağlıyoruz. EF4 desteğiyle derlemeyi Aralık ayı sonunda - Ocak başında yayınlamayı planlıyoruz. Entity Framework desteğimizi ideal bir destek olarak adlandıramayız - bu ORM başlangıçta MS SQL Server için tasarlanmıştır, bu nedenle diğer DBMS'lerin harikalarını hesaba katma olasılığı önemli ölçüde sınırlıdır.

Bir EF sağlayıcısını uygulayanın çözemediği bir dizi sorun vardır. Burada bazı örnekler mevcuttur . Ana sorun, bazı durumlarda EF çalışma zamanı tarafından oluşturulan CROSS APLY ve OUTER APPLY deyimleriyle ilişkilidir. Diğer DBMS'ler bu ifadeyi sağlamaz, bu nedenle sorun çeviri ile ortaya çıkar. Ayrıca, eski veritabanları durumunda EF'in genellikle uygulanamaz olduğunun farkına varılmalıdır.

Varsayılan Microsoft tasarımcısından memnun olmayan kullanıcıları hesaba katıyor ve ürünlerimizle birlikte güçlü bir tasarım zamanı aracı olan Varlık Geliştirici'yi gönderiyoruz .


Sağlayıcınız, parametreleri kabul eden işlev içe aktarmalarıyla (saklı yordam) düzgün çalışıyor mu? çünkü MySql'in konektörüyle ilgili sorunlar yaşıyordum.
Robert Koritnik

Şu anda parametreleştirilmiş fonksiyon içe aktarımlarını dikkate alan herhangi bir açık talebimiz yok. Ancak dotConnect for MySQL'in gereksinimlerinizi karşılayıp karşılamadığını kontrol edebilirsiniz, sadece sitemizden deneme sürümünü indirin. EF v1 için geçerli olan bir şey daha var - yalnızca işlev içe aktarmaları için değil, aynı zamanda herhangi bir sonuç kümesi döndürmeyen prosedürler için de destek sağlıyoruz. Belirli kod üretimi ve Varlık Geliştirici aracı sayesinde elde edildi.
Devart

2

EF 7 aşağıdaki DB sağlayıcılarını destekler

• Microsoft SQL Sunucusu

• SQLite

• Microsoft SQL Server Compact Sürümü

• Npgsql (PostgreSQL)

• IBM Veri Sunucuları

• InMemory (test için)

Referans


Sanırım bu, oldukça farklı olduğu için EntityFrameworkCore olarak yeniden adlandırıldı: thedatafarm.com/data-access/…
andrew pate

1

MySQL'in EF4 için bir konektörü var , mevcut sürüm 6.3.5 ve ana işlevleri iyi çalışıyor ancak yine de birkaç yöntemle ilgili sorunları var, örn.

  • System.Data.Objects.ObjectContext.CreateDatabase ()
  • System.Data.Objects.ObjectContext.DatabaseExists ()

bu da model-ilk yaklaşımın tam olarak kullanılmasını zorlaştırır. MySQL komut dosyasını manuel olarak düzenleyerek mümkündür (CreateDatabaseScript yöntemiyle kullanılabilir). MySQL ekibi bu hataları çözmeye istekli görünmüyor, taahhüt seviyesinin aslında kendi açılarından ne olduğundan emin değilim ama kesinlikle bir zamanlar olduğundan daha düşük.

Bununla birlikte, aynı yöntemler SQL CE ile de başarısız oluyor (uygulanmıyorlar ve MS ekibinin bununla yakında başa çıkacağını düşünmüyorum).


VS2010 / EF4 için MySQL desteği hakkında daha fazla bilgiyi şu sayfada bulabilirsiniz: dev.mysql.com/doc/refman/5.1/en/… . MySQL Connector / Net sürüm 6.3.2 veya üstüne ihtiyacınız olacak.
mathijsuitmegen

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.