1

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

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

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

我现在已经尝试以管理员身份运行它并且它可以工作,所以它肯定试图在我的Program Files目录中创建一个文件,必须在某个地方设置临时文件?

任何帮助都会很棒:)

4

3 回答 3

0

你找到问题的答案了吗?我遇到了同样的问题,但通过部署转换处理了它......

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 :-)

于 2011-11-14T11:53:32.987 回答
0

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

于 2013-08-13T20:33:56.950 回答
0

尝试导出具有多个实用程序的 SQL CE db 脚本时,我也遇到了同样的问题。出现错误“不允许访问数据库文件”。然后我刚刚从 VS2010 连接到那个 db 文件,复制了连接字符串,然后......它工作了!:)

于 2013-04-18T08:31:57.553 回答