ef-core
Entity Framework Core のベストプラクティスを提供します。EF Core を使ったデータアクセス層の設計や実装において、推奨される手法やパターンを確認したいときに活用できます。
description の原文を見る
Get best practices for Entity Framework Core
SKILL.md 本文
Entity Framework Core ベストプラクティス
Entity Framework Core を使用する際に、ベストプラクティスに従うのをお手伝いするのが目標です。
データコンテキストの設計
- DbContext クラスは焦点を絞り、結果として得られるようにする
- コンストラクタインジェクションを設定オプションに使用する
- OnModelCreating を Fluent API の設定でオーバーライドする
- IEntityTypeConfiguration を使用してエンティティ設定を分離する
- コンソールアプリまたはテストでは DbContextFactory パターンの使用を検討する
エンティティの設計
- 意味のある主キーを使用する(自然キーと代理キーを検討)
- 適切な関係を実装する(1対1、1対多、多対多)
- 制約と検証に対してデータアノテーション or Fluent API を使用する
- 適切なナビゲーション プロパティを実装する
- バリューオブジェクトの所有エンティティ型の使用を検討する
パフォーマンス
- 読み取り専用クエリには AsNoTracking() を使用する
- Skip() と Take() で大規模な結果セットのページネーションを実装する
- 必要に応じて Include() で関連エンティティを遅延読み込みする
- プロジェクション(Select)で必要なフィールドのみを取得することを検討する
- 頻繁に実行されるクエリにはコンパイル済みクエリを使用する
- 関連データを適切に含めることで N+1 クエリの問題を回避する
マイグレーション
- 小さく焦点を絞ったマイグレーションを作成する
- マイグレーションに説明的な名前をつける
- 本番環境に適用する前にマイグレーション SQL スクリプトを確認する
- デプロイメントにマイグレーションバンドルの使用を検討する
- 必要に応じてマイグレーションを通じてデータシーディングを追加する
クエリ実行
- IQueryable を慎重に使用し、クエリがいつ実行されるかを理解する
- 生 SQL より強力に型付けされた LINQ クエリを優先する
- 適切なクエリ演算子(Where、OrderBy、GroupBy)を使用する
- 複雑な操作にはデータベース関数の使用を検討する
- 再利用可能なクエリのための仕様パターンを実装する
変更追跡と保存
- 適切な変更追跡戦略を使用する
- SaveChanges() の呼び出しをバッチ処理する
- マルチユーザーシナリオの同時実行制御を実装する
- 複数の操作にはトランザクションの使用を検討する
- 適切な DbContext ライフタイム(Web アプリではスコープ化)を使用する
セキュリティ
- パラメータ化クエリを使用することで SQL インジェクションを回避する
- 適切なデータアクセス権限を実装する
- 生 SQL クエリには注意する
- 機密情報の暗号化を検討する
- マイグレーションを使用してデータベースユーザーの権限を管理する
テスト
- ユニットテストにはインメモリデータベースプロバイダーを使用する
- 統合テストのために SQLite を使用した個別テストコンテキストを作成する
- 純粋なユニットテストでは DbContext と DbSet をモックする
- 分離された環境でマイグレーションをテストする
- モデル変更のためのスナップショットテストを検討する
EF Core コードを確認する際に、問題を特定し、これらのベストプラクティスに従う改善を提案します。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- github
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/github/awesome-copilot / ライセンス: MIT
関連スキル
superfluid
Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper
civ-finish-quotes
実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。
nookplot
Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。
web3-polymarket
Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。
ethskills
Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。
xxyy-trade
このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。