LoginSignup
1
3

More than 5 years have passed since last update.

【C#】EntityFrameworkでSQL ServerのテーブルをIEnumerable<T>オブジェクトとして扱う

Last updated at Posted at 2016-05-22

OracleのEntityFrameworkは難易度が高いので、SQL Serverから始める。
まず、こちらからSQL Server 2014 Expressをダウンロードする。ExpressAndTools XXBIT\SQLEXPRWT_xYY_JPN.exeが、DBサーバーと管理ツール(Management Studio)の両方がついてくるのでおススメ。ダウンロード後に解凍してインストール。インストール時はひたすら【次へ】ボタンを押す。インストールが終わればManagement Studioを開き、SQL Serverに接続できることを確認する。確認が終わればVisual Studioでプロジェクトを作成する(Management Studioは開いたまま)。作成後、NuGetでEntityFrameworkをインストールする。そして、下記3つのクラスを作成・修正する。

EncodingInfo.cs
class EncodingInfo
{
    public int Id { get; set; }
    public int CodePage { get; set; }
    public string Name { get; set; }
    public string DisplayName { get; set; }
}
MyContext.cs
using System.Data.Entity;

class MyContext : DbContext
{
    public DbSet<EncodingInfo> EncodingInfos { get; set; }
}
Program.cs
class Program
{
    static void Main(string[] args)
    {
        using (var context = new MyContext())
        {
            context.EncodingInfos.Add(new EncodingInfo()
            {
                CodePage = 932,
                Name = "shift_jis",
                DisplayName = "Japanese (Shift-JIS)"
            });
            context.EncodingInfos.Add(new EncodingInfo()
            {
                CodePage = 20932,
                Name = "EUC-JP",
                DisplayName = "Japanese (JIS 0208-1990 and 0212-1990)"
            });
            context.EncodingInfos.Add(new EncodingInfo()
            {
                CodePage = 65001,
                Name = "utf-8",
                DisplayName = "Unicode (UTF-8)"
            });

            context.SaveChanges();
        }
    }
}

3つのクラスを作成し終えたら実行。処理終了後にManagement Studioでデータベース一覧を見ると、MyContextという名前のデータベースが作成され、テーブル一覧にdbo.EncodingInfosがある。SELECT文を発行すると、3レコードが追加されていることもわかる。
Program.csのMainメソッドの中身を次のように書き換える。

Program.cs
using (var context = new MyContext())
{
    foreach (var info in context.EncodingInfos)
    {
        System.Console.WriteLine(info.DisplayName);
    }
}

実行すると、先ほど追加した3レコードのDisplayNameプロパティが標準出力に出力される。

  • SQL Serverの場合、App.configを一切触る必要がない。
  • 行を表すクラス(EncodingInfoクラス)にはIdプロパティが必要。Idカラムが主キーになる。
1
3
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
1
3