Anahtar kelime desteklenmiyor: Entity Framework Context'i başlatan “veri kaynağı”


161

Entity Framework Object bağlamını başlatıyorum ve bu bana anahtar kelime desteklenmeyen hata veriyor:

metadata=res://*/MainDB.csdl|res://*/MainDB.ssdl|res://*/MainDB.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQLEXPRESS;AttachDbFilename=D:\Workspace\vs\Leftouch\Leftouch.Web\Data\Leftouch.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;App=EntityFramework"

Bağlantı dizesini doğrudan çalışan web.config'den aldım ve yalnızca (dinamik olarak ayarladığım) dosyanın yolunu değiştirdim ve varsayılan değeri kullanmak yerine bu bağlantı dizesini açıkça kullandım. Bu hataya ne sebep olabilir?


2
Farklı bir yaklaşım için lütfen stackoverflow.com/questions/6003085/… adresine bakın
LCJ

1
Ben bu geldi kim olduğunu bilmiyorum metadata=res:, sonra res=somethingelsebirlikte "yer sözdizimi her yerinde - ama onlar şu anda benimle aynı odada değildir gerçekten mutlu olmalıdır: - /
Simon_Weaver

2018 .Net EF Çekirdek benzer sözdizimi hatası - SqlClient bağlantı dizesi için sağlayıcıAdı gerekli değildi. Ayrıca EF çekirdeği için dize tırnak veya keneler.
Sql Surfer

Yanıtlar:


322

Bu hatayı almanızın gerçek nedeni ", bağlantı dizenizdeki değerlerden kaynaklanmaktadır.

Bunları tek tırnak işareti ile değiştirirseniz iyi çalışır.

https://docs.microsoft.com/archive/blogs/rickandy/explicit-connection-string-for-ef

(Başkalarının düzeltmeyi benden daha hızlı alabilmesi için gönderildi.)


1
Bağlantı dizesini ObjectContent sınıfına geçiriyorsanız, bunun tek tırnak içerdiğinden emin olun. Bağlantıyı .config dosyasından alıyorsanız, & quot; kaçış dizisi.
Mike Stonis

Bunu benim için düzeltti.
GiddyUpHorsey

XML'in nasıl çalıştığını bilmeyenler "için, bir tırnak işareti için bir kaçış dizisidir, çünkü XML'de ayrılmış bir karakterdir.
Vivian River

1
Teşekkürler Şimdi çalışıyor
Shivam Srivastava

System.Data.EntityClient.EntityConnectionStringBuilder bunu benim için yaptı, teşekkür ederim.
AFract

37

Entity Framework kullanıyor olmama rağmen bunu EntityClienttekrar değiştirerek düzelttim SqlClient.

Yani benim tam bağlantı dizesi biçimindeydi:

<add name="DefaultConnection" connectionString="Data Source=localhost;Initial Catalog=xxx;Persist Security Info=True;User ID=xxx;Password=xxx" providerName="System.Data.SqlClient" />

2
Benim için çalıştı! +1
Yury Kerbitskov

6
Yukarıdaki değişiklik potansiyel olarak (benim durumumda olduğu gibi) aşağıdaki hataya neden olur: "Bağlam Kod Önce Modunda, Önce Veritabanı veya Önce Model geliştirme için bir EDMX dosyasından oluşturulan kodla kullanılır"
Psi-Ed

OnModelCreating () içine yeni UnintentionalCodeFirstException () atmak yorum yapabilirsiniz, ancak kirli bir geçici çözüm gibi görünüyor
Alexander Ulmaskulov

14

Bu providerName="System.Data.EntityClient"biraz eksik gibi görünüyor . Her ţeye sahip olduđuna emin misin?


Tamam, bu başka bir özellikti, onu unuttum. Şimdi eklendi metadata=res://*/MainDB.csdl|res://*/MainDB.ssdl|res://*/MainDB.msl;provider=System.Data.SqlClient;provider name=System.Data.EntityClient;provider connection string=&quot;{0};App=EntityFramework&quot;ve şimdi anahtar bulunamadı diyor: sağlayıcı adı. Ben de providerName=...yerine denedim provider name=, ama şans yok.
Can Poyrazoğlu

2
EntityConnectionStringBuilderSınıfı kullanarak yaratmaya başladım ve garip bir şekilde, şimdi çalışıyor. Ama hala eklemelerinizle bile neden dizimi kabul etmediği hakkında hiçbir fikrim yok.
Can Poyrazoğlu

3

İster inanın ister inanmayın, LinqPad.exe.config dosyasını LinqPad.config olarak yeniden adlandırmak bu sorunu çözdü.


12
Bu Microsoft, her şey olabilir!
Altaf Patel

Bu mantıklı değil. Linqpad'in bu soru ile ne ilgisi var ve yürütülebilir dosyayı yeniden adlandırmak nasıl yardımcı olabilir?
Gert Arnold

Peki bu özel hata benim durumumda Linqpad ile meydana geldi ve bunu yaparak çözdü. Ve çalıştırılabilir dosyayı yeniden adlandırmadım. .Exe.config dosyasını .config olarak yeniden adlandırdım.
Sameer Alibhai

Her neyse, bu çok özel bir senaryo. Sadece hiçbir şeyi açıklamadığı için gürültü ekler ,
Gert Arnold


1

Bağlantı dizenizde bulunup Data Sourcebulunmadığından emin olun DataSource. Alan önemlidir. Güven Bana. Ben bir aptalım.

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.