LoginSignup
1
1

Microsoft.EntityFrameworkCoreについて

Posted at

Entity Framework Coreとは?

Entity Framework (EF) Coreは、Microsoftが開発したオープンソースのオブジェクトリレーショナルマッピング(ORM)フレームワークです。これは、データベースとのインタラクションを抽象化し、開発者がより直感的にデータベース操作を行えるようにするためのものです。EF Coreを使用することで、SQLクエリを直接書くことなく、C#のコードでデータ操作を行うことができます。

主な機能とメリット

  1. LINQクエリ - EF Coreは、言語統合クエリ(LINQ)をサポートしており、データベースクエリをC#のコードで簡単に記述できます。
  2. マイグレーションサポート - データベーススキーマの変更をC#コードを通じて行うことができ、これによりデータベースのバージョン管理が容易になります。
  3. 多様なデータベースサポート - EF Coreは、SQL Server、MySQL、SQLiteなど、多くのデータベースプロバイダに対応しています。

環境のセットアップ

EF Coreを使用するためには、Visual Studioで.NETプロジェクトを設定し、必要なNuGetパッケージをインストールする必要があります。以下は基本的なステップです:

  1. Visual Studioを開き、新しいプロジェクトを作成します。
  2. NuGetパッケージマネージャを使用して、「Microsoft.EntityFrameworkCore」をプロジェクトに追加します。
  3. データベースプロバイダに応じて、追加のパッケージ(例えば「Microsoft.EntityFrameworkCore.SqlServer」)をインストールします。

基本的な使用方法

  1. データモデルの定義 - まず、データベースのテーブルに相当するC#クラス(エンティティ)を定義します。
  2. DbContextの作成 - DbContextクラスを継承して、エンティティとのインタラクションを管理するクラスを作成します。
  3. データ操作 - DbContextを使用してデータのCRUD操作(作成、読み取り、更新、削除)を行います。

実際のコード例

// データモデル
public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }
}

// DbContextの定義
public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=Blogging;Integrated Security=True");
    }
}

// データ操作の例
using (var context = new BloggingContext())
{
    var blog = new Blog { Url = "http://blogs.msdn.com/adonet" };
    context.Blogs.Add(blog);
    context.SaveChanges();
}

実際のコード例の解説

1. データモデルの定義

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }
}
  • 役割: この部分は、データモデルを定義しています。ここでは Blog というクラスを定義しており、データベースの Blog テーブルのスキーマを表しています。BlogIdUrl は、テーブルのカラムに相当します。
  • 詳細: BlogId はブログの一意の識別子(主キー)であり、Url はブログのURLを保持するフィールドです。{ get; set; } はプロパティのゲッターとセッターで、これによりプロパティの値を取得または設定できます。

2. DbContextの作成

public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=Blogging;Integrated Security=True");
    }
}
  • 役割: BloggingContext クラスは、データベース操作のための主要なクラスです。これは DbContext クラスを継承しており、EF Coreでのデータ操作の中心的な役割を果たします。
  • 詳細:
    • DbSet<Blog> Blogs: これは Blog エンティティに対するクエリを行ったり、データを保存するために使用されるプロパティです。
    • OnConfiguring: このメソッドはデータベース接続の設定を行います。ここでは、SQL Serverデータベースへの接続文字列を設定しています。

3. データ操作の例

using (var context = new BloggingContext())
{
    var blog = new Blog { Url = "http://blogs.msdn.com/adonet" };
    context.Blogs.Add(blog);
    context.SaveChanges();
}
  • 役割: このコードブロックは、実際にデータベースに対して操作を行っています。ここでは、新しい Blog エンティティを作成し、それをデータベースに追加しています。
  • 詳細:
    • new BloggingContext(): BloggingContext のインスタンスを作成します。これにより、データベース操作のためのコンテキストが提供されます。
    • new Blog { Url = ... }: 新しい Blog オブジェクトを作成し、その Url プロパティを設定しています。
    • context.Blogs.Add(blog): 作成した Blog オブジェクトを DbSet に追加します。これにより、オブジェクトがデータベースに挿入される準備が整います。
    • context.SaveChanges(): 変更をデータベースに保存します。この命令により、前の行で追加された Blog オブジェクトがデータベースに実際に挿入されます。
1
1
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
1