2010-11-24 4 views
11

엔티티 프레임 워크를 사용하여 모델에서 SQLite 데이터베이스를 생성 할 수 있습니까? SQLite 연결을 생성하고 모델을 만들었지 만 "모델에서 데이터베이스 생성"을 클릭하면 MS SQL과 비슷한 모양을하고 SQLite (파일의 시작 부분)로 실행하면 오류가 발생합니다.Entity Framework 모델에서 SQLite 데이터베이스 용 SQL 생성

-- -------------------------------------------------- 
-- 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"' 

이이 방식으로 작동 안가?

편집 :

아무도 답을 아는 것 같은데 없기 때문에 내가 만들어 줄게 쉽게 : 그것은 마이크로 소프트 SQL 서버가 아닌 다른 데이터베이스에 대한 EF와 SQL 코드를 생성 할 수 있습니까?

답변

11
나는이에 대한 해결책을 찾고 있었다

, 나는이 링크 우연히 때 http://code.msdn.microsoft.com/Demo-of-ADONET-POCO-with-140ad3ad

장소 C에서 SSDLToSQLite3.tt 파일 : \의 Program Files (x86) \ 마이크로 소프트 비주얼 스튜디오 10.0 \ Common7 \ IDE \ Extensions \ Microsoft \ Entity Framework Tools \ DBGen을 사용하면 Entity Designer에서 DDL 생성 템플릿으로 선택할 수 있습니다.

일단 그렇게하면 모델이 SQLite에 적합한 SQL을 만듭니다.

+2

'SSDLToSQLite3.tt' 테 일을 할 것으로 보인다. 감사. 최신 System.Data.SQLite 배포판이 설치되어 있기 때문에이 기사에서 설명한 구성 파일 수정 작업을 수행 할 필요가 없습니다. 유일하게 명확하지 않은 것은 그것을 적용하는 방법을 찾는 것이 었습니다 - 모델 속성에서 디자이너의 여유 공간을 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하는 것이 새로운 것은 아닙니다. – Ivan

2

SSDLToSQLite3.tt 파일에는 INTEGER PRIMARY KEY AUTOINCREMENT이 아닌 단일 기본 키가있는 테이블에 기본 키가 정의되지 않은 버그가있는 것 같습니다.

if (keyCount > 1) 

에 :

간단한 변화

는 그게 트릭에서 .tt 파일의 line 105을 변경하는 것입니다 않습니다 발견

if (keyCount > 1 | (keyCount > 0 & autoIncreaseFieldName == string.Empty)) 
관련 문제