LINQPad的IQ Connection插件允许用户使用SQLite,其复选框为“如果丢失则创建数据库”,但只会创建一个空文件。无论如何,当文件不存在时自动构建表吗?
是否应该有办法获取DataContext并使用该接口创建表?希望能让LINQPad同时更新其DataContext。
我到目前为止能做的最好的事情就是下面,在删除sqlite文件后创建DbCommands并在第一次运行时执行它们,然后我必须刷新数据库,然后再次运行它。
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();
}
答案 0 :(得分:2)
只需将查询语言下拉列表设置为“SQL”,键入DDL并按F5键。例如:
PRAGMA foreign_keys = ON
GO
create table Customer
(
ID int not null primary key,
Name nvarchar(30) not null
)
GO
create table Purchase
(
ID int not null primary key,
CustomerID int null references Customer (ID),
Date datetime not null,
Description varchar(30) not null,
Price decimal not null
)
(注意创建外键约束的语法。)
完成后,右键单击Schema Explorer中的连接,然后选择“刷新”。然后,您可以将查询语言切换回 C#表达式或 C#语句,并以适当的查询语言开始查询:)