使用带有自定义扩展名的SDF文件(SQLCE数据库)作为我的WPF应用程序的数据文件类型

时间:2011-05-14 11:34:38

标签: .net wpf sql-server-ce

我正在WPF(.NET 4)中构建应用程序

我的应用程序使用自定义扩展程序创建,打开和保存数据文件(为了清楚起见,我将它们称为 .myapp 文件)。我正在使用安装程序项目将 .myapp 文件与我安装的程序相关联,并且我已经给了他们自己的图标/操作/等。)

.myapp 文件非常简单,是一个SQLCE 3.5数据库文件,扩展名从。 sdf 更改为 .myapp

它正在运作,但我正在寻找关于这是否是一种好办法的建议。

我的一部分想知道是否应该将 .myapp 文件设为包装文件,其中包含SDF以及一些元数据。我假设这样做,我打开文件时需要将SDF加载到内存中,然后负责将其“保存”回文件。我考虑这个选项的原因是:

  1. 它允许我在sdf旁边存储其他元数据,如预期的应用程序版本,其他快速可读的属性等。
  2. 它允许我以只读模式打开文件(即不保存它们)
  3. 它会(更多)防止有人将扩展名重命名为.sdf并使用SQL Management Studio打开它并弄乱数据。
  4. 这是一种可行/更好的方法吗?通过将SDF加载到内存中,我会看到性能优势吗?是否有任何陷阱需要注意?

    赞赏任何其他建议!

2 个答案:

答案 0 :(得分:3)

在sdf文件上使用自定义文档扩展名是一个很好的主意。但是,将sdf文件包装在另一个文件中并“加载到内存中”是不行的,因为您只能在SQL Server Compact连接字符串中指定文件路径。 SQL Server Compact引擎为您管理“在内存中加载”并根据需要刷新到磁盘。

1:您可以通过将metatdata存储在sdf文件中的表/表中来完成此操作。 2:以只读模式打开是一个连接字符串选项,因此您可以通过更改连接字符串来实现。 3:您可以为文件指定密码(也在连接字符串中),这将加密数据库文件。

答案 1 :(得分:1)

另一个好处是您可以对文件进行简单加密。这肯定会使没有人直接打开文件并更改数据的可能性更大。