.net 从实体框架模型生成SQLite数据库的SQL
是否可以使用实体框架从模型生成SQLite数据库?我创建了一个SQLite连接并创建了一个模型,但是当我单击“从模型生成数据库”时,我得到了以下内容,它看起来像MS SQL,如果使用SQLite执行(只是文件的开头),就会出错: 我的连接字符串如下所示,因此我确实选择了正确的数据库类型:.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
'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))