我应该实例化扩展 DbContext 的 类 吗?
Am I supposed to instantiate my classes that extend DbContext?
使用代码优先迁移和实体,class
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")
{
}
为什么我需要制作多个 class 实例?它不能是静态的 class 因为我用它做的只是在单个数据库上进行事务吗?我只是想弄清楚背后的原因......
DbContext 跟踪它看到的每个实体。如果您为所有操作和用户重复使用相同的上下文,则此信息会越来越多。 ASP.NET 中普遍推荐的方法是为每个请求使用一个 DbContext 实例,以防止事情变得如此之大以至于导致您的应用程序池崩溃。
使用代码优先迁移和实体,class
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")
{
}
为什么我需要制作多个 class 实例?它不能是静态的 class 因为我用它做的只是在单个数据库上进行事务吗?我只是想弄清楚背后的原因......
DbContext 跟踪它看到的每个实体。如果您为所有操作和用户重复使用相同的上下文,则此信息会越来越多。 ASP.NET 中普遍推荐的方法是为每个请求使用一个 DbContext 实例,以防止事情变得如此之大以至于导致您的应用程序池崩溃。