質問: は言う > Entity Frameworkは、一連の規則を使用して**、エンティティクラスの形状に**基づいて**モデル**を構築**し** **ます** 。慣例により発見されたものを補足および/または上書きするために追加の構成を指定できます。 > > とは言う > EF Coreは、 **EF Coreモデル**と**データベーススキーマの**同期を維持する2つの主要な方法を提供します。 2つの中から選択するには、EF Coreモデルとデータベーススキーマのどちらが真の情報源かを決定します。 > > EF Coreモデルを真実のソースにしたい場合は、マイグレーションを使用してください。 EF Coreモデルに変更を加えると、このアプローチは対応するスキーマ変更をデータベースに段階的に適用して、EF Coreモデルとの互換性を維持します。 > > データベーススキーマを信頼できるソースにする場合は、リバースエンジニアリングを使用します。このアプローチでは、データベーススキーマをEF Coreモデルにリバースエンジニアリングすることにより、DbContextおよびエンティティタイプクラスを足場することができます。 > > 私はもともと、EF CoreモデルはC#の一部のエンティティクラスであると考えていました。しかし、上記の2つの引用は、EF Coreモデルがエンティティクラスとデータベースの間にあるものであることを示唆しているようです。 それで、EF CoreモデルがC#.NET Coreプログラムの一部として表されているかどうか疑問に思っていましたか? Visual Studio IDEがなく、その存在をプログラムの一部としてしか認識できません。
回答: > しかし、上記の2つの引用は、EF Coreモデルがエンティティクラスとデータベースの間にあるものであることを示唆しているようです。 > > はいといいえ。 内部的には、Entity Framework(EF6とEF Coreの両方)にはEFの内部にある「データベースモデル」があり、プログラマーは内部にアクセスしない限りアクセスできません。このモデルはPOCOや「エンティティオブジェクト」では表されませんが、EFのコンシューマとしての私たちが相互作用しない内部システムによって表されます(したがって、問題ではありません)。 古いバージョンのEntity Frameworkでは、これは`*.edmx` XMLファイルで、データベーステーブル、列、sprocs、UDFなどをすべてリストし、それらを.NETクラスタイプとそのメンバーにマップしました。これは、参照している内部データベースモデルです。 EFの最近のバージョン(EF Coreを含む)では、このEDMXファイルは廃止されています。 **内部データベースモデルはまだ存在**し、 `*.edmx` 。 `*.edmx`ファイルを使用する代わりに、実行時に( `Configuration`コードを使用して)生成されます。 詳細については、2012年のこのStackOverflow QAをお勧めします。これは、Entity Framework 4の3つの異なる "モード"(コードファースト、データベースファースト、モデルファースト)を指します。 EF Coreは*技術的に*はコードファーストになっていますが、「データベースファースト」は、実際のSQL Serverデータベース(または他のサポートされているRDBMS)からPOCOおよび`Configuration`コードを再生成することで実現されます。