EF 5'in sorguları otomatik olarak önbelleğe alacağını, ancak bağlam veya genel olarak bunu gerçekleştirdiğini anlıyorum. MVC kullanıyoruz ve dbcontext'i bertaraf etmek için çağrıları bir blok kullanarak tamamlıyoruz. Örneğin: yeni bir DBContext elde edilecektir çünküVarlık Çerçevesi ile Önbelleğe Alınmış Sorgular 5
public class Employee
{
public string FirstName {get; set;}
public string LastName {get; set;}
public int ID {get; set;}
}
public class EmployeeQueryByFirstName : IQueryObject<Employee>
{
private string _firstName;
public void Set(string FirstName)
{
_firstName = FirstName;
}
public Expression<Func<Employee,bool>> AsExpression()
{
return (e=>e.FirstName == this._firstName);
}
}
public class RepoExcerpt
{
public TEntity Find<TEntity>(IQueryObject<TEntity> queryObject)
where TEntity : class
{
using (var conn = ServiceLocator.IOC.Resolve<IDbContext>())
{
var query = (from q in conn.Set<TEntity>()
select q);
query = query.Where(queryObject.AsExpression());
return query.FirstOrDefault();
}
}
}
biz depo üzerinde Find
diyoruz dahaki sefere 5 Bu sorgunun önbelleğe alınmış sürümüne sahip EF olacak, ya da gitmiş olacak? Ve eğer önbelleğe alınmış sorguları istiyorsam, bunu halletmem gerekecek mi?
Aynı sorgu olduğundan emin olmak için motorun ifadeyi geçmesi gerekiyor mu? –