【发布时间】:2013-03-05 03:27:41
【问题描述】:
我有以下类来创建我的 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?
还有一个问题。 EF 多久创建一次“数据库的内存模型”。每次实例化 DbContext 类时都会发生这种情况吗?
【问题讨论】:
标签: sql-server asp.net-mvc entity-framework entity-framework-4 ef-code-first