ASP.NET MVC 3脚手架中不允许访问sql compact 4数据库

本文关键字:sql 访问 compact 数据库 不允许 NET MVC 脚手架 ASP | 更新日期: 2023-09-27 18:09:09

这有点奇怪。我正在使用SQL compact 4进行MVC 3代码优先开发。一切都很好,但当我试图构建一个新的控制器时,我遇到了问题。我启动新的控制器对话框,选择我的实体和数据上下文(两者都在同一解决方案中的单独程序集中(,并得到以下错误:

无法检索"MyNamespace.MyClassName"的元数据。不允许访问数据库文件。[1884,文件名=C:''Program Files''Microsoft Visual Studio 10.0''Common7''EntityContext.sdf,SeCreateFile]

磁盘上目前不存在该文件-EntityContext.sdf文件位于我的App_Data文件夹中。我不确定它是否试图创建那个文件(如果是,为什么?(,但如果是,我没有以管理员身份登录,所以它没有权限。在这种情况下,我需要定义一个不同的工作文件夹或其他什么吗?

我现在已经尝试过以管理员身份运行它,它可以工作,所以它肯定是在尝试在我的程序文件目录中创建一个文件,一定有临时文件的设置吗?

任何帮助都会很好:(

ASP.NET MVC 3脚手架中不允许访问sql compact 4数据库

您找到问题的答案了吗?我也遇到了同样的问题,但通过部署转换进行了处理。。。

Web.Config中,我使用了SDF的完整路径:

<configuration>
    <connectionStrings>
        <add 
          name="DBContext" 
          connectionString="Data Source=C:'full-path'DBContext.sdf" 
          providerName="System.Data.SqlServerCe.4.0" />
...

Web.Release.config中,我替换connectionString属性。。。

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add 
      name="DBContext" 
      connectionString="Data Source='DBContext.sdf" 
      xdt:Transform="SetAttributes" 
      xdt:Locator="Match(name)"/>
  </connectionStrings>
  <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
  </system.web>
</configuration>

发布部署后,将进行正确的"|DataDirectory|"设置,而不是"C:''full path''"。

不过我想修复一下原来的问题!!

PK:-(

当我尝试导出具有大量utils的SQL CE数据库脚本时,也遇到了同样的问题。收到错误"不允许访问数据库文件"。然后我刚刚从VS2010连接到数据库文件,复制了连接字符串。。。成功了!:(

我在使用T4Scaffolding时遇到了这个问题。我通过安装MVCScaffolding nuget包解决了这个问题,并使用了"MVCScaffelding:具有读/写操作和视图的控制器,使用EF数据访问代码"模板。它生成类似的控制器操作和视图。我无法卸载并重新安装T4Scaffolding nuget包,以查看这是否是一个错误或损坏的安装。