【问题标题】:Generate SQL for SQLite database from Entity Framework Model从实体框架模型为 SQLite 数据库生成 SQL
【发布时间】:2011-05-15 10:13:33
【问题描述】:

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

-- --------------------------------------------------
-- Entity Designer DDL Script for SQL Server 2005, 2008, and Azure
-- --------------------------------------------------
-- Date Created: 11/25/2010 00:26:41
-- Generated from EDMX file: G:\Foo\Bar\Model1.edmx
-- --------------------------------------------------

SET QUOTED_IDENTIFIER OFF;
GO
USE [foobar.sqlite];
GO
IF SCHEMA_ID(N'dbo') IS NULL EXECUTE(N'CREATE SCHEMA [dbo]');
GO
...

我的连接字符串如下所示,所以我肯定选择了正确的数据库类型:

'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 代码?

【问题讨论】:

    标签: .net sql-server entity-framework sqlite orm


    【解决方案1】:

    当我偶然发现此链接时,我正在寻找解决方案:http://code.msdn.microsoft.com/Demo-of-ADONET-POCO-with-140ad3ad

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

    完成此操作后,模型将创建适合 SQLite 的 SQL。

    【讨论】:

    • SSDLToSQLite3.tt 似乎可以完成这项工作。谢谢。由于我安装了完整 System.Data.SQLite 发行版的最新版本,因此无需进行文章中描述的任何配置文件修改。唯一不明显的是找到如何应用它 - 我没有在模型属性中选择它(右键单击设计器可用空间并在那里选择属性)。
    【解决方案2】:

    SSDLToSQLite3.tt 文件似乎有一个错误,即没有为具有不属于 INTEGER PRIMARY KEY AUTOINCREMENT 种类的单个主键的表定义主键。

    我发现最简单的改变是把line 105.tt文件从:

    if (keyCount > 1)
    

    到:

    if (keyCount > 1 | (keyCount > 0 & autoIncreaseFieldName == string.Empty))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-30
      • 2017-10-04
      相关资源
      最近更新 更多