将sql脚本转换为可以在sqlite上运行的格式

时间:2014-07-06 01:54:04

标签: c# sql database sqlite converter

我有一个由Entity框架生成的sql脚本,它创建了一个非常简单的表。

create table [Destinations] (
    [Id] [int] not null identity,
    [Country] [nvarchar](max) null,
    [State] [nvarchar](max) null,
    [City] [nvarchar](max) null,
    primary key ([Id])
);

我试图在Sqlite数据库上运行它,但似乎语法不同。 我试图编写一个替换方法来替换他们的sqlite版本的关键字,这是不完全正常的。 我想知道是否有更好的方法来进行这些更改,或者是否有一个库在C#中执行此操作?

这是转换后的脚本:

create table [Destinations] ( 
[Id] INTEGER not null AUTOINCREMENT , 
[Country] [nvarchar](max) null, 
[State] [nvarchar](max) null, 
[City] [nvarchar](max) null, 
primary key ([Id]) 
);

1 个答案:

答案 0 :(得分:0)

您想要的精确SQL是:

create table [Destinations] ( 
[Id] integer NOT NULL PRIMARY KEY AUTOINCREMENT, 
[Country] [nvarchar], 
[State] [nvarchar], 
[City] [nvarchar]
);

的变化:

  1. 主键声明应为integer NOT NULL PRIMARY KEY AUTOINCREMENT
  2. 从类型声明中删除(max)
  3. 从列声明中删除null
  4. 从结尾删除primary key ([Id])(以及相关的逗号)
  5. 请注意,SQLite会理解nvarchar,并将字段的类型亲和力设置为TEXT,因为其中包含CHAR类型。见http://www.sqlite.org/datatype3.html

    修改

    由于SQLite支持EF,我以前对此没有必要发表评论。 OP纠正了我,指出SQLite的EF实现首先不支持代码,因此问题就出现了。