实体框架的上下文旨在用作短期实例,以提供最佳性能体验。 上下文应短时保存并丢弃,因此,实现的上下文非常轻便,且可在需要时再次利用元数据。 在 Web 场景中,请务必记住这一点,并不要让上下文留存时间超过单个请求的持续时间。 同样,在非 Web 场景中,应根据对实体框架中不同级别缓存的理解来决定是否丢弃上下文。 一般而言,应避免在应用程序的整个生命周期中拥有上下文实例,以及每个线程的上下文和静态上下文。
using (NorthwindEntities context = new NorthwindEntities())
{
var orders = from o in context.Orders
where o.Customer.LastName.StartsWith(lastNameParameter)
select o;
orders.Load();
var customers = from c in context.Customers
where c.LastName.StartsWith(lastNameParameter)
select c;
foreach (Customer customer in customers)
{
...
}
}