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
1.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
.NET 10のEntity Framework Coreの新機能
tkym
November 21, 2025
More Decks by tkym
See All by tkym
GitHubCopilotCLIのスラッシュコマンドを自作してみる
htkym
0
100
今さら聞けないCancellationToken
htkym
0
250
GitHub Copilot CLIのいいところ
htkym
2
1.4k
GitHubCopilotCLIをはじめよう.pdf
htkym
0
380
RoslynAnalyzerをつかってみよう
htkym
0
840
SourceGeneratorのマーカー属性問題について
htkym
0
270
SourceGeneratorのススメ
htkym
0
930
Entity Framework Core におけるIN句クエリ最適化について
htkym
0
230
.NET 10のBlazorの期待の新機能
htkym
0
1.4k
Other Decks in Technology
See All in Technology
41歳でAWSが好きすぎてITエンジニアになったおっさんの話
yama3133
1
730
AIとハーネスで育てるトランスコンパイラ / 20260722 Yasushi Katayama
shift_evolve
PRO
3
740
プロダクト開発組織の現在地(Ver.2026/07) / product-organization
kaonavi
0
330
実践!既存 Project への AI-Driven Development 適用〜 一ヶ月で Project 唯一のフロントエンドエンジニアを作り出せ〜
lycorptech_jp
PRO
0
380
OpenTelemetryにおけるGoのゼロコード・コンパイル時計装について #fukuokago
quiver
0
190
AI、CDK と協働する Full TypeScript アプリケーション開発 / Full TypeScript Application with AI and CDK
geekplus_tech
2
460
kaonavi Tech Night#1
kaonavi
0
150
AI時代のYAGNI:「爆速で無駄になった機能」からの学び / 20260720 Naoki Takahashi
shift_evolve
PRO
3
510
Amplify Gen2でbackend.tsにCDKを定義する/しない事によるCDKの挙動の違いとユースケース
smt7174
1
480
データエンジニアリングとドメイン駆動設計
masuda220
PRO
14
2.4k
GoでCコンパイラを作った話
repunit
0
150
インシデント事例と パッケージの全量解析に学ぶ ソフトウェアサプライチェーンの守り方 / supply-chain-attack-defense
flatt_security
0
860
Featured
See All Featured
Claude Code のすすめ
schroneko
67
230k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
380
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
370
Evolving SEO for Evolving Search Engines
ryanjones
0
240
A Modern Web Designer's Workflow
chriscoyier
698
190k
Are puppies a ranking factor?
jonoalderson
1
3.7k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
The Spectacular Lies of Maps
axbom
PRO
1
870
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
240
Prompt Engineering for Job Search
mfonobong
0
380
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
330
Deep Space Network (abreviated)
tonyrice
0
230
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