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.