Плагин IQ Connection для LINQPad, позволяющий использовать SQLite, имеет флажок «Создать базу данных, если отсутствует», но при этом создается только пустой файл. Есть ли способ автоматически создавать таблицы, когда файл не существует?
Не должен ли быть способ получить DataContext и создать таблицы с использованием этого интерфейса? Надеемся, что LINQPad одновременно обновит свой DataContext.
Лучшее, что я смог сделать на данный момент, это создание DbCommands и выполнение их при первом запуске после удаления файла sqlite, затем мне нужно обновить базу данных и запустить ее снова.
void Main()
{
if (!File.Exists(this.Connection.ConnectionString.Split('=')[1]))
{
"CREATING DATABASE TABLES".Dump();
CREATE_TABLES();
}
else
{
"RUNNING CODE".Dump();
//Code goes here...
}
}
public void CREATE_TABLES()
{
this.Connection.Open();
System.Data.Common.DbCommand sup = this.Connection.CreateCommand();
sup.CommandText = @"create table MainTable
(
MainTableID INTEGER not null PRIMARY KEY AUTOINCREMENT,
FileName nvarchar(500) not null
)";
sup.ExecuteNonQuery();
sup.CommandText = @"create table SubTable
(
SubTableID int not null,
MainTableID int not null,
Count int not null,
primary key (SubTableID, MainTableID),
FOREIGN KEY(MainTableID) REFERENCES MainTable(MainTableID)
)";
//Apparently this version of sqlite doesn't support foreign keys really
sup.ExecuteNonQuery();
this.Connection.Close();
}