SQL Server CE:使用脚本生成数据库
Posted
技术标签:
【中文标题】SQL Server CE:使用脚本生成数据库【英文标题】:SQL Server CE: Generate DB with script 【发布时间】:2013-03-12 16:42:04 【问题描述】:我想使用SqlCeEngine
类来构建数据库并使用表(like this question)填充它,但使用ExportSqlCE 生成的脚本。
我想知道使用SqlBulkCopy
是否可以做到这一点? (已复制here 的 SQL Server CE 版本)。
或者,如果有另一种解决方案可以使用表和约束(28 个表,52 个约束,大多数列不能为空)快速填充 .sdf
数据库文件。
当我的应用程序加载时,我会检查数据库文件是否存在。万一该文件丢失(或者在安装后第一次加载程序时),我希望能够重新生成一个空数据库。
我使用DataPort Console 创建了数据库,因为作为我的第一个真正的数据库应用程序,我想以图形方式设计数据库。
【问题讨论】:
为什么不简单地在您的应用程序中包含一个空的数据库文件,并在需要时将其复制到所需的位置? 如果数据库文件丢失,我希望应用程序能够自行维护。 是的,我的建议将允许你这样做...... 这并不能解决我的问题,因为稍后我希望可以选择更改数据库。我希望能够为用户提供可能需要重新构建数据库的应用程序的更新版本。我想要提取他们的数据,删除数据库,用新模式重建,然后以“安装后程序初始化”为幌子导入他们的数据的选项,这样他们就看不到更改。每当我更改内容时,我宁愿不必提供新的数据库(即使它是空的) 好的,现在你解释你的要求! - 您应该为更新的应用程序提供 ALTER TABLE/CREATE TABLE 脚本,并可能将当前数据库版本存储在数据库表中。 【参考方案1】:最终我无法找到复制我想要的功能的解决方案,而是按照ErikEJ 的建议决定实施一系列在负载时运行的脚本。 ExportSqlCE 对于创建已定义的 SQL Server CE database
的脚本仍然很有用。
我最终实现了一个List<string>
,在其中添加了各种脚本。如果我想更新数据库或为数据库的初始版本选择硬编码的“默认”脚本,这允许我选择加载脚本。然后我可以循环遍历 List 元素,将 SqlCeCommand command.CommandText
属性更改为 List 中的下一个元素。
【讨论】:
以上是关于SQL Server CE:使用脚本生成数据库的主要内容,如果未能解决你的问题,请参考以下文章
生成 SQL Server CE 数据库的快照与简单地复制 .SDF 文件有何不同?
如何从 C# 动态运行 SQL Server CE [Windows mobile] 中的 SQL 脚本文件?
从 SQL Server CE 切换到 SQL Server Express 实体问题
ASP.NET EF5 代码优先不创建 SQL Server CE 数据库