【问题标题】:SQLite in VS 2012VS 2012 中的 SQLite
【发布时间】:2012-09-10 10:54:31
【问题描述】:

好吧,我花了太多时间来敲我的头 :)

我需要在不使用完整数据库服务器的情况下在 Windows 上的会话之间保留少量(少于 1000 个)项目集合。项目是具有十几个字符串属性的简单对象。 数据库/集合/任何东西都应该存储在一个可以在运行时通过代码创建的文件中。

从 SQL server CE 开始,然后切换到 SQLite,但现在我被告知 Entity 是一种方法。 我不介意学习实体,但对于简单的存储来说似乎开销太大。

我该怎么办? (如果还有人真正编写 Windows 小型数据库)

  1. 抛弃实体,直接通过命令访问 SQLite。
  2. 将实体与 SQLite 结合使用(希望能提供有关在运行时创建数据库的正确方法的链接)
  3. 抛弃数据库的整个概念(我放这个是因为以前每本书都有一个关于数据库的章节,现在我没有一本书提到它。互联网上也没有多少新东西,所以人们可能会转向其他一些概念)

谢谢。

【问题讨论】:

  • 你的数据库需要被多个用户使用吗?
  • 抱歉,忘记了 :) 不,它是单用户数据库。

标签: c# .net database entity-framework sqlite


【解决方案1】:

听起来像结构化文本数据 - 十几个字符串属性。

我会使用 XML

XDocument Class

【讨论】:

  • 在数据安全不是必须的简单情况下,我也会选择 XML;但是如果您需要这些记录的安全,最好使用具有密码功能的文件数据库;例如SQLite、SqlCe 甚至 MS-Access!
  • @Achilles 没有提到敏感数据。用户特别要求提供不使用数据库的选项。并且本地硬盘上的任何数据都可能被黑客入侵——它会减慢速度并停止好奇的编辑。
  • 我试图给 OP 一些提示和建议,以便在选择数据存储时考虑;并且有一些方法可以使用 AES 加密 SQLite 数据库,这使得被黑客入侵非常困难。 hwaci.com/sw/sqlite/see.html
【解决方案2】:

我会在 SQL CE 中使用数据上下文,这不仅仅是您描述的工作。

唯一的问题是您只能将其备份到本地 C: 驱动器上。因此,如果该磁盘死了,您将失去一切。

您无需转移到实体来完成您需要做的事情。

如果它确实成为您想要多次访问的东西,那么您将不得不重新考虑这一点。

希望对您有所帮助。

【讨论】:

    【解决方案3】:

    实际上,我正在以某种方式走与您相同的道路 [VS2012/WPF4],我发现 Dapper+Sqlite 的组合对我来说很好。
    System.Data.SQLite 的设计时支持将在 2012 年 11 月之前准备好,因此 EF5 将从我的选项中删除。
    查看 Dapper:
    http://code.google.com/p/dapper-dot-net/ 这扩展了IDbConnection,您只需要打开到您想要的任何数据库的连接。

    编辑:使用 Dapper,我无法自动化数据绑定...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-06
      • 2012-12-05
      • 1970-01-01
      • 2014-05-03
      • 2013-11-03
      • 1970-01-01
      相关资源
      最近更新 更多