2010-11-24 199 views
11

是否有可能從具有實體框架的模型生成SQLite數據庫?我創建了一個SQLite連接並創建了一個模型,但是當我點擊「從模型生成數據庫」時,我得到以下內容,它看起來像MS SQL,並且在使用SQLite執行時發生錯誤(只是文件的開頭):從實體框架模型生成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 SQL代碼比MICROSOFT SQL SERVER其他任何數據庫?

回答

11

我一直在尋找一個解決方案,這一點,當我偶然發現了這個鏈接:http://code.msdn.microsoft.com/Demo-of-ADONET-POCO-with-140ad3ad

放置SSDLToSQLite3.tt文件在C:\ Program Files文件(x86)的\微軟的Visual Studio 10.0 \ Common7 \ IDE \擴展\微軟\實體框架工具\ DBGen,你應該能夠選擇它作爲實體設計器中的DDL生成模板。

一旦你這樣做了,模型將創建適合SQLite的SQL。

+2

`SSDLToSQLite3.tt`似乎做TE工作。謝謝。由於我已安裝完整的System.Data.SQLite發行版的最新版本,因此不需要執行本文中描述的任何配置文件修改。唯一不明顯的是找到如何應用它 - 我並沒有在模型屬性中選擇它(右鍵單擊設計器的可用空間並在其中選擇屬性)。 – Ivan 2013-01-19 15:44:19

2

SSDLToSQLite3.tt文件似乎有一個錯誤,其中主鍵沒有爲具有不是INTEGER PRIMARY KEY AUTOINCREMENT變體的單個主鍵的表定義。

最簡單的改變我發現,做的伎倆是從改變.tt文件line 105

if (keyCount > 1) 

到:

if (keyCount > 1 | (keyCount > 0 & autoIncreaseFieldName == string.Empty)) 
相關問題