--- edit --- Czy są jakieś dodatkowe informacje, które mogę podać, aby pomóc rozwiązać ten problem?Sqlite .NET i Entity Framework - "próba napisania bazy danych tylko do odczytu"
Próbuję uruchomić system Sqlite i Entity Framework w serwisie WWW .NET WCF.
Kiedy próbuję zapisać cokolwiek do bazy danych, Otrzymuję komunikat "próba napisania bazy danych tylko do odczytu". Poniżej znajduje się pełna informacja o błędzie:
System.Data.EntityException: Błąd wystąpił podczas uruchamiania transakcji na połączenia operatora. Zobacz wewnętrzny wyjątek, aby poznać szczegóły.
---> System.Data.SQLite.SQLiteException: próba napisania readOnly baza danych,
próba zapisu tylko do odczytu bazy danych
na System.Data.SQLite.SQLite3.Reset (SQLiteStatement stmt)
w [wycinku] ......................................... ...............> w System.Data.EntityClient.EntityConnection.BeginDbTransaction (IsolationLevel isolationLevel) pod adresem System.Data.Common.DbConnection.BeginTransaction() pod adresem System.Data.EntityClient.EntityConnection.BeginTransaction() na System.Data.Objects.ObjectContext.SaveChanges (Boolean acceptChangesDuringSave) w System.Data.Objects.ObjectContext.SaveChanges() na ...
Oto moja konfiguracja EF wewnątrz Web.config (z przerwami liniowych dla łatwiejszego odczytu):
<connectionStrings>
<add
name="FooEntities"
connectionString="metadata=res://*/FooDataModel.csdl|
res://*/FooDataModel.ssdl|
res://*/FooDataModel.msl;
provider=System.Data.SQLite;
provider connection string='data source=C:\domains\myfoosite.com\wwwroot\FooService\Foo.sqlite'"
providerName="System.Data.EntityClient" />
<connectionStrings>
Dlaczego otrzymuję ten błąd? Dlaczego baza danych jest tylko do odczytu?
Niektóre rzeczy próbowałem:
zapewniła katalog i plik jest zapisu stanie przez usługę internetową. (Mam wypróbowane pisania plików tekstowych do samym katalogu, w teście).
Dodałem „tylko do odczytu = False” do ciąg połączenia.
Czy użytkownik, z którym chcesz się połączyć, ma uprawnienia do zapisu w bazie danych? Czy można połączyć się i pisać w bazie danych za pomocą Management Studio (lub odpowiednika)? – ChrisF
Hmmm. Nie określam żadnych poświadczeń - nie określono uwierzytelniania systemu Windows ani autoryzacji formularza. Mogę oczywiście podłączyć i zapisać do bazy danych na mojej maszynie lokalnej. Spróbuję połączyć się z serwerem sieciowym. –
Z mojego rozumienia, Sqlite nie ma uwierzytelniania Windows ani uwierzytelniania formularzy. To tylko pojedyncza baza danych, żadnych usług, bez uwierzytelniania. Czy się mylę? –