我有一个由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])
);
答案 0 :(得分:0)
您想要的精确SQL是:
create table [Destinations] (
[Id] integer NOT NULL PRIMARY KEY AUTOINCREMENT,
[Country] [nvarchar],
[State] [nvarchar],
[City] [nvarchar]
);
的变化:
integer NOT NULL PRIMARY KEY AUTOINCREMENT
(max)
null
primary key ([Id])
(以及相关的逗号)请注意,SQLite会理解nvarchar
,并将字段的类型亲和力设置为TEXT
,因为其中包含CHAR
类型。见http://www.sqlite.org/datatype3.html
修改强>
由于SQLite支持EF,我以前对此没有必要发表评论。 OP纠正了我,指出SQLite的EF实现首先不支持代码,因此问题就出现了。