0

私は c# と System.Data.SQLite を使用しています。実行時に SQLite でテーブルとして生成したいクラスがいくつかありますが、各クラスの SQL 文字列をハードコーディングしたくありません。これを行うための最良の方法は何ですか?SQL文字列を作成する何かがあることを期待して、クラスとクラスのプロパティに属性を追加しようとしましたが...以下に例を示します。

  [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 でテーブルとして作成するには、次のようなものを生成する必要があります。

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

前もって感謝します。

4

1 に答える 1

1

SubSonicのようなものをお探しですか?移行をオンにして実行でき、クラスのテーブルが生成されます。

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>
于 2012-04-24T12:00:25.947 に答える