2015-10-02 6 views
-1

Использование кода-первых миграции и Entity, классДолжен ли я создавать экземпляры классов, расширяющие DbContext?

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") 
    { 
    } 

Зачем мне нужно создавать более одного экземпляра этого класса? Разве это не был статический класс, поскольку все, что я делаю с ним, делает транзакции в одной базе данных? Я просто пытаюсь выяснить причины этого ...

+0

http://meta.stackoverflow.com/questions/307295/username-impersonates-real-person – apaul

ответ

0

DbContext отслеживает каждую сущность, которую он видит. Эта информация будет расти и расти, если вы повторно используете один и тот же контекст для всех операций и пользователей. Обычно рекомендуемый подход в ASP.NET заключается в том, чтобы использовать один экземпляр DbContext для каждого запроса, чтобы не допустить роста такой вещи, которая привела к сбою вашего пула приложений.