dbcontext を作成するための次のクラスがあります。
public class DataContext : DbContext
{
public DataContext()
: base(nameOrConnectionString: "Default") { }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
public DbSet<TestAccount> TestAccounts { get; set; }
public DbSet<Application> Applications { get; set; }
}
私のデータベースには次のテーブルがあります。
CREATE TABLE [dbo].[TestAccount] (
[TestAccountId] INT IDENTITY (1, 1) NOT NULL,
[ApplicationId] INT,
[Name] NVARCHAR (MAX) NOT NULL,
[DataVersion] ROWVERSION,
CONSTRAINT [PK_dbo.TestAccount] PRIMARY KEY CLUSTERED ([TestAccountId] ASC),
CONSTRAINT fk_AccountApplication FOREIGN KEY (ApplicationId) REFERENCES Application(ApplicationId)
);
私が理解していることから、EFはデータベースのメモリ内モデルを作成しますが、私が理解していないのは、その情報に外部キー関係が自動的に含まれるか、インターネットで見つけた次の例のように指定する必要があるかということです:
// public AccountConfiguration()
// {
// // // Account has 1 Speaker, Speaker has many Account records
// // HasRequired(s => s.Speaker)
// // .WithMany(p => p.SpeakerAccounts)
// // .HasForeignKey(s => s.SpeakerId);
// }
また、データベースが既に存在する場合、PluralizingTableNameConvention を削除する必要があるなどのことを追加する必要がありますか?
もう1つ質問です。EF が "データベースのインメモリ モデル" を作成する頻度。これは、DbContext クラスをインスタンス化するたびに発生しますか?