每次读取DBSET,都会重新连接数据?数据不会缓存吗?
例如下面的代码,
using (NorthDb north = new NorthDb())
{
IEnumerable<Product> proList = north.Products.Where(a => a.ProductID > 0);
foreach (Product pro in proList) //连接数据库
{
Category cat = pro.Category; //连接数据库
string name = cat.CategoryName;
}
foreach (Product pro in proList) //连接数据库
{
Category cat = pro.Category; //不连接数据库
string name = cat.CategoryName;
}
}
public class NorthDb : DbContext
{
public DbSet<Product> Products { get; set; }
public DbSet<Category> Categories { get; set; }
}
你啥都知道了,应该写成博文发表的,这里是博问。
foreach (Product pro in proList) 时链接了数据库,已经有了对应的实体pro 所以foreach 里面的内容是没有链接数据库的。
对于DbSet对象,Where和First方法会重新连接数据库
Find方法是先在内存中找,找不到再到数据库找。
Local是指在内存中找,但是无法找到已删除的对象