Entity framework Sqlite.NET和实体框架-“;尝试写入只读数据库;

Entity framework Sqlite.NET和实体框架-“;尝试写入只读数据库;,entity-framework,sqlite,Entity Framework,Sqlite,---编辑---是否有其他信息可以帮助我解决这个问题 我正在尝试在.NETWCFWeb服务中启动并运行Sqlite和实体框架 当我试图将任何内容保存到数据库时,我收到错误“尝试写入只读数据库”。以下是完整的错误信息: System.Data.EntityException:错误 启动事务时发生 在提供程序连接上。有关详细信息,请参见内部异常 --->System.Data.SQLite.SQLite异常: 尝试写入只读数据库 尝试写入只读数据库 在 System.Data.SQLite.SQLi

---编辑---是否有其他信息可以帮助我解决这个问题

我正在尝试在.NETWCFWeb服务中启动并运行Sqlite和实体框架

当我试图将任何内容保存到数据库时,我收到错误“尝试写入只读数据库”。以下是完整的错误信息:

System.Data.EntityException:错误 启动事务时发生 在提供程序连接上。有关详细信息,请参见内部异常

--->System.Data.SQLite.SQLite异常: 尝试写入只读数据库

尝试写入只读数据库
在 System.Data.SQLite.SQLite3.Reset(SQLiteStatement stmt)
在[snip]处 在System.Data.EntityClient.EntityConnection.BeginDbTransaction(隔离级别 隔离级别)在 System.Data.Common.DbConnection.BeginTransaction() 在 System.Data.EntityClient.EntityConnection.BeginTransaction() 在 System.Data.Objects.ObjectContext.SaveChanges(布尔值 acceptChangesDuringSave)位于 System.Data.Objects.ObjectContext.SaveChanges() 在

以下是我在Web.config中的EF配置(为便于阅读,请使用换行符):


为什么我会收到这个错误?为什么数据库是只读的

我尝试过的一些事情:

  • 确保目录和文件是正确的 可由web服务写入。(我已经 尝试将纯文本文件写入到 与测试目录相同。)

  • 我已将“read only=False”添加到 连接字符串


原来问题出在IIS安全设置上。我必须打开脚本写访问权限,它神奇地开始工作。

您用来连接的用户是否具有对数据库的写访问权限?您可以使用Management Studio(或等效工具)连接并写入数据库吗?嗯,我没有指定任何类型的凭据--没有指定Windows auth或Forms auth。当然,我可以连接并写入本地机器上的数据库。我将尝试在web服务器上连接。据我所知,Sqlite没有Windows auth或Forms auth。它只是一个单文件数据库,没有服务,没有身份验证。我弄错了吗?我遇到了同样的问题。您在哪里打开了“脚本写入访问权限”?我查看了处理程序,但我可以在“编写”和“脚本”之间进行选择,但不能同时选择两者(单选按钮)。我找到了答案。它是IIS用户(IIS_IUSRS)在文件系统上的Windows级别写入权限,在我的情况下,可以通过主机“WebsitePanel”配置该权限。也许它也可以通过FTP(chmod)配置,但我没有尝试。@LouisSomers:你应该添加你的评论作为这个问题的答案。
<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>