Как я могу использовать сценарии SQL в проекте базы данных с поставщиком данных System.Data.SQLite? - PullRequest
0 голосов
/ 23 мая 2009

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

Ответы [ 2 ]

1 голос
/ 13 июля 2011

Я построил свою базу данных с использованием SQL-скрипта SQLite, а затем вставил ее в консольную программу sqlite3.exe следующим образом.

c: \ sqlite3.exe mydatabase.db

John

0 голосов
/ 23 мая 2009

Ну, ваш скрипт выглядит как хранимая процедура SQL Server. SQLite, скорее всего, не поддерживает это, потому что

  1. Он не поддерживает хранимые процедуры, а
  2. Он не понимает SQL Server T-SQL

SQL на самом деле является псевдостандартом. Это отличается между поставщиками и иногда даже между различными версиями продукта в пределах одного и того же поставщика.

Тем не менее я не вижу причины, по которой вы не можете запустить (SQLite-совместимый) оператор SQL для базы данных SQLite, открыв объекты подключения и команды, как вы это делали бы с SQL Server.

Однако, поскольку вы новичок в базах данных и SQLite, вот как вы должны начать. Я предполагаю, что у вас уже установлен SQLite

  1. Создайте новое приложение Windows в Visual Studio 2008. Приложение базы данных будет вам бесполезно.

  2. Откройте Обозреватель серверов, открыв меню «Вид» и выбрав Обозреватель серверов.

  3. Создайте новое соединение, щелкнув правой кнопкой мыши узел «Соединения данных» в обозревателе серверов и выбрав «Добавить новое соединение» ...

  4. Нажмите кнопку Изменить

  5. Выберите поставщика SQLite

  6. Дайте вашей базе данных имя файла.

  7. Нажмите ОК.

В проводнике сервера должно появиться новое соединение данных. Вы можете создать свою первую таблицу, щелкнув правой кнопкой мыши узел «Таблицы» и выбрав «Добавить новую таблицу».

...