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
100
.NET 10のEntity Framework Coreの新機能
tkym
November 21, 2025
Tweet
Share
More Decks by tkym
See All by tkym
.NET 10のBlazorの期待の新機能
htkym
0
670
Azure Static Web Appsでユニバーサルリンク
htkym
0
10
Aspireとazdでデプロイが簡単に
htkym
0
22
Azure Blob Storageでユニバーサルリンク
htkym
0
170
Other Decks in Technology
See All in Technology
ローカルLLM基礎知識 / local LLM basics 2025
kishida
23
6.7k
AI エージェントを評価するための温故知新と Spec Driven Evaluation
icoxfog417
PRO
2
680
都市スケールAR制作で気をつけること
segur
0
200
変わるもの、変わらないもの :OSSアーキテクチャで実現する持続可能なシステム
gree_tech
PRO
0
220
単一Kubernetesクラスタで実現する AI/ML 向けクラウドサービス
pfn
PRO
1
350
信頼性が求められる業務のAIAgentのアーキテクチャ設計の勘所と課題
miyatakoji
0
120
レガシーで硬直したテーブル設計から変更容易で柔軟なテーブル設計にする
red_frasco
4
570
Pandocでmd→pptx便利すぎワロタwww
meow_noisy
2
870
pmconf 2025 大阪「生成AI時代に未来を切り開くためのプロダクト戦略:圧倒的生産性を実現するためのプロダクトサイクロン」 / The Product Cyclone for Outstanding Productivity
yamamuteki
3
2.4k
re:Inventにおける製造業のこれまでとこれから
hamadakoji
0
320
持続可能なアクセシビリティ開発
azukiazusa1
6
320
大規模プロダクトで実践するAI活用の仕組みづくり
k1tikurisu
5
1.8k
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
The Invisible Side of Design
smashingmag
302
51k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.3k
Why You Should Never Use an ORM
jnunemaker
PRO
60
9.6k
The Cost Of JavaScript in 2023
addyosmani
55
9.3k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
11
940
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
118
20k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
980
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
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