Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
.NET 10のEntity Framework Coreの新機能
Search
tkym
November 21, 2025
Technology
0
950
.NET 10のEntity Framework Coreの新機能
tkym
November 21, 2025
Tweet
Share
More Decks by tkym
See All by tkym
SourceGeneratorのススメ
htkym
0
200
Entity Framework Core におけるIN句クエリ最適化について
htkym
0
160
.NET 10のBlazorの期待の新機能
htkym
0
1.2k
Azure Static Web Appsでユニバーサルリンク
htkym
0
30
Aspireとazdでデプロイが簡単に
htkym
0
28
Azure Blob Storageでユニバーサルリンク
htkym
0
180
Other Decks in Technology
See All in Technology
Cosmos World Foundation Model Platform for Physical AI
takmin
0
940
Tebiki Engineering Team Deck
tebiki
0
24k
AWS Network Firewall Proxyを触ってみた
nagisa53
1
240
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
320
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
260
15 years with Rails and DDD (AI Edition)
andrzejkrzywda
0
200
茨城の思い出を振り返る ~CDKのセキュリティを添えて~ / 20260201 Mitsutoshi Matsuo
shift_evolve
PRO
1
340
セキュリティについて学ぶ会 / 2026 01 25 Takamatsu WordPress Meetup
rocketmartue
1
310
AI駆動開発を事業のコアに置く
tasukuonizawa
1
270
ファインディの横断SREがTakumi byGMOと取り組む、セキュリティと開発スピードの両立
rvirus0817
1
1.5k
登壇駆動学習のすすめ — CfPのネタの見つけ方と書くときに意識していること
bicstone
3
120
Why Organizations Fail: ノーベル経済学賞「国家はなぜ衰退するのか」から考えるアジャイル組織論
kawaguti
PRO
1
110
Featured
See All Featured
Accessibility Awareness
sabderemane
0
53
Navigating Team Friction
lara
192
16k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
117
110k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
3.9k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
830
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
77
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Making Projects Easy
brettharned
120
6.6k
A Soul's Torment
seathinner
5
2.3k
Believing is Seeing
oripsolob
1
56
How GitHub (no longer) Works
holman
316
140k
Transcript
.NET 10の Entity Framework Coreの 新機能 FutureOne株式会社 高山博司
高山博司 ・ FutureOne株式会社 ・ C#/.NET/Blazor tkym @88poipoi88
目次 ・ .NET 10 の Entity Framework Core の新機能 ・
Entity Framework Core について ・ Entity Framework Core の新機能
Entity Framework Core について
O/Rマッパー? • Object-Relational Mapper • 「オブジェクト」 と 「リレーショナルDB」 の マッピングをおこなう仕組み
• オブジェクト操作からSQLへ • テーブルデータからオブジェクト StudentId Name Age 001 名前1 20 002 名前2 30 003 名前3 40
Entity Framework Core • Microsoftによって開発・提供されている,.NET向けのO/Rマッパー • オープンソース: https://github.com/dotnet/efcore • クロスプラットフォーム:
.NET Coreと完全に統合,クロスプラットフォームのアプリ開発をサポート • 高性能,軽量: 従来のEFに比べてパフォーマンスが大幅に改善
Entity Framework Core • エンティティ (Entity): データベースの「テーブル」構造を C#のコードで表現したもの. ・ DbContext
(データベースコンテキスト): データベースとの「対話セッション」全体を管理する. ・ データベースへの接続 ・ トランザクションの管理 ・ エンティティの変更追跡 ・ DbSet (エンティティセット): DbContextクラスの内部に定義されるプロパティ 特定のエンティティ(つまり特定のテーブル)への 操作(追加,検索,削除など)を行うための「窓口」.
Entity Framework Core の新機能
新機能一覧 What's New in EF Core 10 | Microsoft Learn
IN句クエリの最適化 ・ パラメータ化されたコレクションを含むクエリ問題を解決 ・ 長年の課題だった
IN句クエリの最適化 ・ .NET 7以前 → インライン定数 プランキャッシュ汚染 毎回SQLが変わるので,DBのクエリプランのキャッシュが使えない 都度都度プランを作成し,キャッシュが使い捨てプランで溢れる →
パフォーマンスの低下
IN句クエリの最適化 ・ .NET 8 → JSON配列パラメータ ◎ SQLが変わらない!プランキャッシュ汚染回避! カーディナリティ推定の失敗 プランナはパラメータの数がわからない...
非効率な実行プランを選択することも → パフォーマンス低下
IN句クエリの最適化 ・ .NET 9 → TranslateParameterizedCollectionsToConstantsオプション ◎ オンにすると,インライン定数モードになる 根本的な解決ではなく,開発者が選ぶことに...
IN句クエリの最適化 ・ .NET 10 → パディング付きスカラーパラメータ ◎ 値が変わっても,SQLが変わらない! ◎ パラメータを水増し(パディング)
→ 何個か余分なパラメータを足してSQLを生成させる
IN句クエリの最適化 ・ .NET 10 どうするかもオプションで選べる ・ ParameterTranslationMode.Scalar: パディング付きスカラーパラメータ ・ ParameterTranslationMode.Json:
JSON配列パラメータ ・ ParameterTranslationMode.Constant: インライン定数
IN句クエリの最適化 ・ .NET 10 クエリ毎でも選べる ・ パディング付きスカラーパラメータ ・ インライン定数
ネイティブJSONサポート Azure SQL Database および SQL Server 2025 ・ ネイティブJasn型をサポート
ネイティブJSONサポート Azure SQL Database および SQL Server 2025 ・ ネイティブJasn型をサポート
→ パフォーマンスとストレージ効率が 向上.
Complex Typesによるパフォーマンスモデリング ・ .NET 8で導入されたComplexTypesがより良くなった. → Value Objectのようなキーを持たない構造化されたデータのマッピングには ComplexTypesが推奨に
Complex Typesによるパフォーマンスモデリング テーブル分割 Json
Complex Typesによるパフォーマンスモデリング ・ .NET 7 以前: Owned Types → 内部的にはEntity型
扱いづらい・・・
Complex Typesによるパフォーマンスモデリング ・ .NET 7 以前: Owned Types → ExecuteUpdateが使えない
Error
Complex Typesによるパフォーマンスモデリング ・ .NET 8/9: Complex Types ・ キー値によって識別されたり、追跡されたりしない。 ・
エンティティ型の一部としてのみ定義される(DbSet<T>を持てない)。 ・ インスタンスを複数のプロパティで共有できる。 クリア!
Complex Typesによるパフォーマンスモデリング ・ ExecuteUpdateのアップデート .NET 9 .NET 10
Complex Typesによるパフォーマンスモデリング ・ ExecuteUpdateのアップデート JSONカラムも
LeftJoin と RightJoin 演算子の導入 ・ .NET 8/9以前 ・ SQLの LEFT
JOIN/RIGHT JOIN (外部結合) に相当するものがない. ・ GroupJoin、DefaultIfEmpty、SelectManyを組み合わせておこなっていた.
LeftJoin と RightJoin 演算子の導入 ・ .NET 10 ・ LeftJoin と
RightJoinが導入 (メソッド構文のみ).
ベクトル検索サポート ・ Azure SQL Database と SQL Server 2025
名前つきQueryフィルター ・ .NET 9以前 ・ 一つしか定義できなかった ・ Ignoreは全部外れる
名前つきQueryフィルター ・ .NET 10 ・ 複数定義可能 ・ 名前指定で外せる
SQLパラメータ名の 可読性向上 ・ 読みやすくなった
分割クエリの順序の一貫性の向上 分割クエリ: 関連データを複数の独立したSQLクエリで 取得する機能
分割クエリの順序の一貫性の向上 ・ NET 9 ・サブクエリのOrder by に [Id]がない → 返すデータの順序が
変わる可能性
分割クエリの順序の一貫性の向上 ・ NET 10 ・サブクエリのOrder by に [Id]がある → 順序の一貫性を
まとめ What's New in EF Core 10 | Microsoft Learn