我有一个项目,我试图通过System.Data.SQLite使用 SQLite 。为了使数据库处于版本控制之下,我继续在我的 VS2008 中创建了一个数据库项目。听起来不错,对吧?
我创建了我的第一个表创建脚本并尝试在脚本上使用右键单击-> 运行来运行它,我收到以下错误消息:
您正在使用的提供程序或数据源不支持此操作。
有谁知道是否有一种自动方法可以使用 System.Data.SQLite 安装提供的提供程序,针对数据库引用的 SQLite 数据库使用属于数据库项目一部分的脚本?
我已经尝试了所有我能想到的变体,试图让脚本使用默认的 Run 或 Run On... 命令运行。这是最冗长且可能不正确的脚本:
USE Characters
GO
IF EXISTS (SELECT * FROM sysobjects WHERE type = 'U' AND name = 'Skills')
BEGIN
DROP Table Skills
END
GO
CREATE TABLE Skills
(
SkillID INTEGER PRIMARY KEY AUTOINCREMENT,
SkillName TEXT,
Description TEXT
)
GO
请注意,这是我第一次尝试使用数据库,也是我第一次接触 SQLite。在我试图让它运行的过程中,除了 CREATE TABLE 命令之外,我已经删除了所有内容。
更新:好的,正如罗伯特哈维在下面指出的那样,这看起来像一个 SQL Server 存储过程。我进入服务器资源管理器并使用我的连接(来自数据库项目)执行他关于创建表的建议。我可以生成 SQL 来创建表,结果如下:
CREATE TABLE [Skills] (
[SkillID] integer PRIMARY KEY NOT NULL,
[SkillName] text NOT NULL,
[Description] text NOT NULL
);
我可以轻松地复制它并将其添加到项目中(或将其添加到处理我的其余数据访问的另一个项目中),但是无论如何在构建时自动执行此操作?我想,因为在这种情况下 SQLite 是一个单一文件,所以我也可以将构建的数据库保持在版本控制之下。
想法?此实例的最佳实践?
更新:我在想,因为我打算使用 Fluent NHibernate,我可能只是使用它的自动持久性模型来保持我的数据库最新并有效地进行源代码控制。想法?陷阱?我想我必须将初始人口插入单独保存在源代码控制中,但它应该可以工作。