EntityFramework:从 ProgramData 文件夹中读取 SDF 文件?

Posted

技术标签:

【中文标题】EntityFramework:从 ProgramData 文件夹中读取 SDF 文件?【英文标题】:EntityFramework: Reading SDF file from ProgramData folder? 【发布时间】:2011-04-07 14:38:14 【问题描述】:

我正在开发一个使用 SQL Compact 4.0 作为其数据存储的 WPF/Entity Framework 4 应用程序。我尝试将数据库 (SDF) 文件存储在 c:\ProgramData\MyCompany\MyApp\ 文件夹中。当我的应用程序尝试打开数据存储时,我收到以下异常:“底层提供程序在打开时失败。”如果文件存储在用户文件夹中,则文件可以正常打开。

我认为抛出异常是出于安全原因——我怀疑 Windows、.NET、EF 或 SQL Compact 不会让我将 SDF 文件存储到 c:\ProgramData 文件夹。那是对的吗?如果是这样,我会感到困惑,因为这通常是我的应用程序存储文本日志的地方。如果我可以登录到该文件夹​​,为什么我不能在其中放置 SDF 文件?

如果我不能存储到 c:\ProgramData ,文件应该存储在哪里,以便同一台机器上的多个用户可以访问同一个文件?感谢您的帮助。

【问题讨论】:

【参考方案1】:

在您的连接字符串中,您是使用绝对路径还是相对路径引用数据库位置?

如果您使用相对路径引用并且您的应用程序不是从“c:\ProgramData\MyCompany\MyApp\”运行的,这可能是问题所在,因为该应用程序将始终尝试在其运行文件夹中查找您的数据库文件。

如果有帮助,请告诉我。

丽安娜

【讨论】:

【参考方案2】:

我认为您需要将 MyApp 文件夹的访问控制列表修改为 Users RW

【讨论】:

以上是关于EntityFramework:从 ProgramData 文件夹中读取 SDF 文件?的主要内容,如果未能解决你的问题,请参考以下文章

EntityFramework - 仅从集合中加载最后一个子项(性能问题)

如何从 NuGet 安装 EntityFramework 5.0(和其他旧版本)?

从业务逻辑层使用带有 EntityFramework 的事务

WPF从program.cs启动项目时报错

从集合中删除项目时的 EntityFramework 多重性错误

csharp DbContextQueryExtension允许从DbContext查询数据(EntityFramework 5+)