C# DbContext只是一个或多个模式以及内存中数据库的记录
我知道延迟和急切加载,这意味着ADO.NET在需要数据之前不会连接到db,所以当我调用.ToList()或迭代LINQ查询时,它会连接并检索数据 EF中的Db上下文只是了解数据库的模式,使我能够将Db作为对象和LINQ使用,或者了解模式,我的记录实际上在我的内存中? 我认为这是不合理的,甚至是不可能的,因为我的所有记录都在记忆中 另一个问题是,DbContext在内存或服务器上的过载是多少?这意味着只有一个DbContext就足够了,或者一个DbContext对于内存有重载,需要拆分它。这里是DDD和拆分DbContext之间的关系 你能给我一个链接让我明白吗C# DbContext只是一个或多个模式以及内存中数据库的记录,c#,sql,linq,entity-framework,C#,Sql,Linq,Entity Framework,我知道延迟和急切加载,这意味着ADO.NET在需要数据之前不会连接到db,所以当我调用.ToList()或迭代LINQ查询时,它会连接并检索数据 EF中的Db上下文只是了解数据库的模式,使我能够将Db作为对象和LINQ使用,或者了解模式,我的记录实际上在我的内存中? 我认为这是不合理的,甚至是不可能的,因为我的所有记录都在记忆中 另一个问题是,DbContext在内存或服务器上的过载是多少?这意味着只有一个DbContext就足够了,或者一个DbContext对于内存有重载,需要拆分它。这里是D
public class Db : IdentityDbContext<User>
{
//content
public DbSet<UrlEntity> ContentUrls { get; set; }
public DbSet<Content> Contents { get; set; }
public DbSet<Banner> Banners { get; set; }
//item
public DbSet<ItemCat> ItemCats { get; set; }
public DbSet<Item> Items { get; set; }
public DbSet<ItemImage> ItemImages { get; set; }
// lots of other
}
公共类数据库:IdentityDbContext
{
//内容
公共DbSet contentURL{get;set;}
公共数据库集内容{get;set;}
公共DbSet横幅{get;set;}
//项目
公共DbSet ItemCats{get;set;}
公共数据库集项{get;set;}
公共数据库集ItemImages{get;set;}
//很多其他的
}
DbContext是模式和缓存。它将跟踪之前加载的对象的对象状态,并随着时间的推移而减慢。我个人发现在有限的时间内使用DbContext是一件好事,比如一个工作单元或一个请求-响应
见:
当使用长时间运行的上下文时,考虑以下内容:
- 当您将更多对象及其引用加载到内存中时,上下文的内存消耗可能会迅速增加。这可能会导致性能问题。
- 当不再需要上下文时,请记住将其丢弃
- 如果异常导致上下文处于不可恢复状态,则整个应用程序可能会终止
- 随着查询和更新数据的时间间隔的增加,遇到并发相关问题的可能性也会增加
- 使用Web应用程序时,请为每个请求使用上下文实例