我是否应该实例化扩展DbContext的类?

时间:2015-10-02 05:55:57

标签: entity-framework entity ef-migrations

使用代码优先迁移和实体,类

public partial class MyDb : DbContext
{
    public MyDb()
        : base("name=mydb")
    {
    }

    public virtual DbSet<BannedIP> BannedIPs { get; set; }
    public virtual DbSet<GameLog> GameLogs { get; set; }
    public virtual DbSet<IP> IPs { get; set; }
    public virtual DbSet<Score> Scores { get; set; }

    protected override void OnModelCreating ( DbModelBuilder modelBuilder )
    {
        modelBuilder.Entity<GameLog>()
            .Property(e => e.logText)
            .IsUnicode(false);

        modelBuilder.Entity<IP>()
            .HasMany(e => e.BannedIPs)
            .WithRequired(e => e.IP)
            .WillCascadeOnDelete(false);

        modelBuilder.Entity<Score>()
            .Property(e => e.name)
            .IsUnicode(false);
    }
}
生成

以镜像我现有的数据库。我的问题是为什么它会生成一个构造函数

    public MyDb()
        : base("name=mydb")
    {
    }

为什么我需要创建这个类的多个实例?它不是一个静态类,因为我所做的就是在一个数据库上进行交易吗?我只想弄清楚背后的原因......

1 个答案:

答案 0 :(得分:0)

DbContext跟踪它看到的每个实体。如果您为所有操作和用户重复使用相同的上下文,则此信息将增长和增长。 ASP.NET中一般推荐的方法是每个请求使用一个DbContext实例来防止事情变得如此之大,以至于它会导致应用程序池崩溃。