【问题标题】:Does migrating data from SQL Server to SQLite have effects on the application codes将数据从 SQL Server 迁移到 SQLite 对应用程序代码有影响吗
【发布时间】:2019-04-08 14:00:47
【问题描述】:

我有一个使用 C# windows 窗体开发的项目,使用 SQL Server 作为数据库,但我想让项目独立,无需任何数据库服务器。我发现 SQLite 作为一种选择,是否可以将我的 SQL Server 数据库迁移到 SQLite 并且不影响我的代码?我该怎么做?

我首先使用实体​​框架代码连接 SQL Server 数据库

【问题讨论】:

  • 也许您可以向我们展示一些与数据库交互的代码?
  • 您考虑过使用 SQL Server Express 吗?
  • 取决于代码。例如,右外连接和全外连接在 sqlite 中不存在。
  • @mjwills SQL Server Express 要求我拥有数据库引擎
  • 我想要一些不需要我拥有数据库引擎的东西,也许这不是正确的词,但我希望能够安装在其他机器上并运行而不用担心机器有数据库与否.. 完全离线

标签: c# sql-server winforms sqlite


【解决方案1】:

答案几乎肯定是“是”。根据一些事情,您可能需要更改很少(或不更改)代码,或者您可能需要更改很多。

首先要考虑的是您的 SQL 代码。如果您在编写符合 ANSI 的 SQL 时非常小心,并且没有使用任何内置的 SQL Server 视图或特定于 T-SQL 的函数,那么您可能根本不需要重新编写很多代码。实际上,您可能至少必须写一些。特别是,虽然 SQL Server 的引擎旨在处理多个并发会话和查询,但 SQLite 不是:您需要仔细管理您的程序,以确保没有两个线程同时尝试访问 SQLite 数据库。

第二个考虑因素是您的应用程序如何调用数据库。同样,根据您的设计,您可能几乎不需要重新编写代码,或者您可能需要重新编写很多代码。在我的 C# 应用程序中,我为定义通用功能(选择、删除、插入等)的数据库提供程序创建了一个接口。然后我为实现该接口的不同 RDBMS 创建简单的包装类。当我需要切换数据库时,我只需实例化并使用不同的类。如果您有这样的项目设置,那么您只需要为 SQLite 创建一个新类,该类实现您的数据库接口并实例化它而不是您的 SQL Server 类。如果您在业务逻辑中编写了大量特定于 SQL Server 的 C# 代码,那么您可能需要编写大量代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    • 2011-07-02
    • 2012-08-21
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多