.net 从实体框架模型生成SQLite数据库的SQL

.net 从实体框架模型生成SQLite数据库的SQL,.net,sql-server,entity-framework,sqlite,orm,.net,Sql Server,Entity Framework,Sqlite,Orm,是否可以使用实体框架从模型生成SQLite数据库?我创建了一个SQLite连接并创建了一个模型,但是当我单击“从模型生成数据库”时,我得到了以下内容,它看起来像MS SQL,如果使用SQLite执行(只是文件的开头),就会出错: 我的连接字符串如下所示,因此我确实选择了正确的数据库类型: 'metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SQLite;provider

是否可以使用实体框架从模型生成SQLite数据库?我创建了一个SQLite连接并创建了一个模型,但是当我单击“从模型生成数据库”时,我得到了以下内容,它看起来像MS SQL,如果使用SQLite执行(只是文件的开头),就会出错:

我的连接字符串如下所示,因此我确实选择了正确的数据库类型:

'metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SQLite;provider connection string="data source=G:\foo\bar\baz"'
这样行不行

编辑:


因为似乎没有人知道答案,所以我会让它变得更简单:是否可以使用EF为MICROSOFT SQL SERVER以外的任何数据库生成SQL代码?

我正在寻找解决方案,突然发现以下链接:

将SSDLToSQLite3.tt文件放在C:\Program Files(x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\DBGen中,您应该能够在实体设计器中选择该文件作为DDL生成模板


一旦您这样做,该模型将创建适合SQLite的SQL。

SSDLToSQLite3.tt文件似乎有一个缺陷,即没有为具有单个主键的表定义主键,而该主键不是
INTEGER主键AUTOINCREMENT
类型

我发现的最简单的更改就是将
.tt
文件的
第105行更改为:

if (keyCount > 1)
致:


SSDLToSQLite3.tt
似乎能胜任这项工作。谢谢而且不需要对本文中描述的配置文件进行任何修改,因为我已经安装了最新版本的完整System.Data.SQLite发行版。唯一不明显的是找到了如何应用它-我没有在模型属性中选择它(右键单击designer空闲空间并在那里选择properties)。
if (keyCount > 1)
if (keyCount > 1 | (keyCount > 0 & autoIncreaseFieldName == string.Empty))