2012-04-19 1 views
0

C# 및 System.Data.SQLite를 사용하고 있습니다. 런타임시 SQLite에서 테이블로 생성 할 클래스가 있습니다.하지만 각 클래스의 SQL 문자열을 하드 코딩하고 싶지는 않습니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?클래스 정의에 따라 SQLite에서 테이블을 동적으로 생성하는 방법이 있습니까?

[Table(Name = "tblDocument")] 
    public class Document 
    { 
    [Column(IsPrimaryKey = true, IsDbGenerated = true)] 
    public long DocumentId { get; set; } 

    [Column(CanBeNull = true)] 
    public string File { get; set; } 
    } 

내가 필요한 SQLite는의 테이블로이를 만들려면 : 나는 나를 위해 SQL 문자열을 생성하지만, 무언가를 것이 희망 내 클래스 속성과 클래스 속성을 추가하는 시도 ... 다음은 예입니다 다음과 같이 생성하십시오 :

string CreateSqlString = 
    @"CREATE TABLE [tblDocument] (" + 
    @"[DocumentId] INTEGER PRIMARY KEY NOT NULL," + 
    @"[File] TEXT NOT NULL)"; 

미리 감사드립니다.

+0

을해야 참조한 가정하면 공급자가 당신이 원하는 것을 할 수있는 EF/LINQ 지원과 함께 제공되는 sqlite ... 만약 당신이 내가 링크를 제공 할 수있는 옵션입니다 ... – Yahia

+0

나는 System.Data.SQLite가 Entity Framework를 지원한다고 생각 했습니까? 어쨌든, 내가 원하는 것은 EF를 포함하거나 포함하지 않을 수도 있지만, 실제로 사용 된 기술에는 관심이 없습니다. –

답변

1

아마도 SubSonic과 같은 것을 찾고 계십니까? 마이그레이션을 켜고 실행하여 클래스에 대한 테이블을 생성합니다.

는 당신은 상용 DB가 Castle.Core.dll, SubSonic.Core.dll 및 System.Data.SQLite.DLL

class Program 
{ 
    private const string ConnectionString = @"Data Source=c:\subsonic.db"; 
    private const string ProviderString = @"System.Data.SQLite"; 
    private static IDataProvider provider = ProviderFactory.GetProvider(ConnectionString, ProviderString); 
    private static SimpleRepository repo = new SimpleRepository(provider, SimpleRepositoryOptions.RunMigrations); 

    static void Main(string[] args) 
    { 
     var demo = new Demo { Name = "Test Demo", LaunchDate = DateTime.Now }; 
     repo.Add(demo); 
    } 

    class Demo 
    { 
     public int ID { get; set; } 
     public string Name { get; set; } 
     public DateTime LaunchDate { get; set; } 
    } 
} 

의 App.config이

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.data> 
     <DbProviderFactories> 
      <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /> 
     </DbProviderFactories> 
    </system.data> 
</configuration> 
관련 문제