「EntityFrameworkCore」を利用して非エンティティクラスへのバインディング方法

Entity Framework Core (EF Core) では、EF Core 7.0 以降: Database.SqlQuery() を使用して、DTO 型やエンティティに登録されていない型にも対応なりました。そのため、エンティティにマッピングされていない非エンティティ型(例えば DTO や匿名型など)を使用してクエリを実行することができます。

SqlQuery を使って SQL クエリを実行し、その結果を任意の型にマッピングしたい場合や、
エンティティ型ではないデータを取得したい場合に有効です。

今回は、geometory型を含むテーブル一覧を取得する際のメモです。

各処理とファイルは以下の通りです。
1.DTO クラスを定義
2.SqlQuery で DTO にマッピングする

1. DTO クラスを定義

まず、クエリの結果を格納するための DTO クラスを作成します。
マッピングしないプロパティには、[NotMapped]属性を付与します。

2.SqlQuery で DTO にマッピングする

次に、SqlQuery を使って、SQL クエリを実行し、結果を TableInfo にマッピングします。

・SqlQuery: EF Core 7.0 以降で追加された、DTO などの非エンティティ型にクエリ結果をマッピングできるメソッドです。
$ でインターポレーション文字列を安全に埋め込むことができます。

取得した情報を画面に出力しました。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする