Inicjalizuję kontekst obiektu Entity Framework, a to daje mi słowo kluczowe nieobsługiwane błąd:
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"
Wziąłem parametry połączenia bezpośrednio z działającego web.config i zmodyfikowałem tylko ścieżkę do pliku (którą ustawiłem dynamicznie) i zamiast używać wartości domyślnej, jawnie użyłem tego ciągu połączenia. Co może spowodować ten błąd?
entity-framework
connection-string
Can Poyrazoğlu
źródło
źródło
metadata=res:
, a następnieres=somethingelse
z"
całym składni miejsce - ale powinny one być naprawdę zadowolony, że nie są w tym samym pokoju co ja teraz: - /Odpowiedzi:
Prawdziwym powodem, dla którego otrzymujesz ten błąd, są
"
wartości w parametrach połączenia.Jeśli zastąpisz je pojedynczymi cudzysłowami, będzie działać dobrze.
https://docs.microsoft.com/archive/blogs/rickandy/explicit-connection-string-for-ef
(Wysłano, aby inni mogli rozwiązać problem szybciej niż ja).
źródło
"
jest to sekwencja ucieczki dla cudzysłowu, ponieważ jest to zastrzeżony znak XML.Naprawiłem to, zmieniając się z
EntityClient
powrotem naSqlClient
, mimo że korzystałem z Entity Framework.Więc moje kompletne parametry połączenia były w formacie:
źródło
Wydaje się, że brakuje tego
providerName="System.Data.EntityClient"
bitu. Jasne, że masz wszystko?źródło
metadata=res://*/MainDB.csdl|res://*/MainDB.ssdl|res://*/MainDB.msl;provider=System.Data.SqlClient;provider name=System.Data.EntityClient;provider connection string="{0};App=EntityFramework"
i teraz mówi, że klucz nie został znaleziony: nazwa dostawcy.providerName=...
Zamiast tego też próbowałemprovider name=
, ale bez powodzenia.EntityConnectionStringBuilder
klasy i, co dziwne, teraz działa. Ale nadal nie mam pojęcia, dlaczego nie zaakceptował mojego ciągu, nawet z twoimi dodatkami.Wierz lub nie, zmiana nazwy LinqPad.exe.config na LinqPad.config rozwiązała ten problem.
źródło
Po prostu użyj \ "zamiast", to powinno rozwiązać problem.
źródło
Upewnij się, że masz parametry połączenia,
Data Source
a nieDataSource
. Przestrzeń jest ważna. Zaufaj mi. Jestem idiotą.źródło