28
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Entity FrameworkでSQLiteのCodeFirstを利用する

Last updated at Posted at 2015-09-07

細々としたプログラム書くのに使えたら便利なのにとか思いながらいろいろ調べつつ試行錯誤してました。

環境・テーブル構造・フォームのコードについてはEntityFramework6で単純なデータ表示フォームを作成と同じ。
EntityクラスについてはEntity FrameworkでPostgreSQLに接続すると同じものを流用。

ちなみに今回はデータベースについては予め用意したものではなく、CodeFirstによって生成しています。

###パッケージインストール
NugetよりSQLite.CodeFirstをインストール。
依存関係は全部引っ張ってきてくれます。ものぐさ万歳。

###App.configの編集
<configration>セクション内に以下を追記。
今回はローカルファイルへの接続。サーバー接続の場合は別の書式が必要かもしれません。

App.condig
  <entityFramework>
    ~~~
    <providers>
      ~~~
      <provider invariantName="System.Data.SQLite"
        type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
    </providers>
  </entityFramework>
  <connectionStrings>
    <add name="musicGame"
      connectionString="Data Source=db.sqlite;"
      providerName="System.Data.SQLite.EF6"/>
  </connectionStrings>

###コンテキストクラスの作成

MusicGameData.cs
using SQLite.CodeFirst;
using System.Data.Entity;

namespace SQLite_CodetoDB
{
    class MusicGameData : DbContext
    {
        public MusicGameData()
            : base("name=musicGame")
        {
        }

        public DbSet<Model> Models { get; set; }
        public DbSet<Title> Titles { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            var sqliteConnectionInitializer = new SqliteCreateDatabaseIfNotExists<MusicGameData>(modelBuilder);
            Database.SetInitializer(sqliteConnectionInitializer);
        }
    }
}

これで以前のコードを用いてデータのINSERT、及びSELECTが可能なことを確認しました。

28
28
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?