У меня есть проект, в котором я пытаюсь использовать SQLite через System.Data.SQLite . В моих попытках держать базу данных под контролем версий, я продолжил и создал проект базы данных в своем VS2008. Звучит хорошо, правда?
Я создал свой первый скрипт создания таблицы и попытался запустить его, щелкнув правой кнопкой мыши -> Выполнить сценарий, и я получаю следующее сообщение об ошибке:
Эта операция не поддерживается для используемого вами провайдера или источника данных.
Кто-нибудь знает, существует ли автоматический способ использовать сценарии, являющиеся частью проекта базы данных, для баз данных SQLite, на которые ссылаются базы данных, с использованием поставщика, предоставляемого установкой System.Data.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, я могу просто использовать его модель автоматического сохранения, чтобы поддерживать базу данных в актуальном состоянии и эффективно контролировать исходный код. Мысли? Ловушки? Я думаю, что мне придется хранить начальные вставки популяции в системе контроля версий отдельно, но это должно сработать.