2011-11-17 5 views
2

SQLite를 사용할 수있는 LINQPad 용 IQ 연결 플러그인에는 "누락 된 경우 데이터베이스 만들기"확인란이 있지만 빈 파일 만 생성합니다. 파일이 없을 때 자동으로 테이블을 빌드 할 수 있습니까?LINQPad는 C# 쿼리에서 sqlite 데이터베이스를 만듭니다.

DataContext를 가져 와서 해당 인터페이스를 사용하여 테이블을 만드는 방법이 없어야합니까? 바라기를 LINQPad가 동시에 DataContext를 업데이트하게합니다.

내가 할 수 있었던 최선의 일은 아래에있다. DbCommands를 만들고 sqlite 파일을 삭제 한 후 처음 실행할 때 데이터베이스를 새로 고쳐 다시 실행해야한다.

void Main() 
{ 
    if (!File.Exists(this.Connection.ConnectionString.Split('=')[1])) 
    { 
     "CREATING DATABASE TABLES".Dump(); 
     CREATE_TABLES(); 
    } 
    else 
    { 
     "RUNNING CODE".Dump(); 
     //Code goes here... 
    } 
} 

public void CREATE_TABLES() 
{ 
    this.Connection.Open(); 
    System.Data.Common.DbCommand sup = this.Connection.CreateCommand(); 
    sup.CommandText = @"create table MainTable 
(
    MainTableID INTEGER not null PRIMARY KEY AUTOINCREMENT, 
    FileName nvarchar(500) not null 
)"; 
    sup.ExecuteNonQuery(); 
    sup.CommandText = @"create table SubTable 
(
    SubTableID int not null, 
    MainTableID int not null, 
    Count int not null, 
    primary key (SubTableID, MainTableID), 
    FOREIGN KEY(MainTableID) REFERENCES MainTable(MainTableID) 
)"; 
    //Apparently this version of sqlite doesn't support foreign keys really 
    sup.ExecuteNonQuery(); 
    this.Connection.Close(); 
} 

답변

2

쿼리 언어 드롭 다운을 'SQL'로 설정하고 DDL을 입력 한 다음 F5 키를 누르십시오. 예를 들어 :

PRAGMA foreign_keys = ON 
GO 

create table Customer 
(
    ID int not null primary key, 
    Name nvarchar(30) not null 
) 
GO 

create table Purchase 
(
    ID int not null primary key, 
    CustomerID int null references Customer (ID), 
    Date datetime not null, 
    Description varchar(30) not null, 
    Price decimal not null 
) 

은 (외래 키 제약 조건을 만들기위한 구문을 참고.)

이 완료되면

, 스키마 탐색기에서 연결을 마우스 오른쪽 버튼으로 클릭하고 '새로 고침'을 선택합니다. 그런 다음 다시 C#을 표현 또는 C# 문에 쿼리 언어를 전환

+0

가 나는 모든 것이 하나 개의 .linq 파일로 결합 할 수 있다고 기대했다 :) 적절한 쿼리 언어로 쿼리를 시작할 수없는 것 sqlite 데이터베이스가 존재하지 않을 때마다 수정이 필요합니다. 그러나 나는 거기에 많이 묻는 것을 알고있다 :) – Thymine

관련 문제