मैं समझता हूं कि ईएफ 5 स्वचालित रूप से प्रश्नों को कैश करेगा, लेकिन क्या यह प्रति संदर्भ या समग्र रूप से करता है? हम एमवीसी का उपयोग कर रहे हैं और dbcontext का निपटान करने के लिए कॉल का उपयोग कर ब्लॉक में लपेट रहे हैं। उदाहरण के लिए:इकाई फ्रेमवर्क के साथ कैश की गई क्वेरी 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();
}
}
}
अगली बार हम भंडार पर Find
फोन, 5 इस क्वेरी का संचित संस्करण है एफई होगा, या यह चला जाएगा, क्योंकि हम एक नई dbcontext हो रही होगी? और अगर मुझे कैश किए गए प्रश्न चाहिए, तो क्या मुझे इसे संभालने की ज़रूरत होगी?
क्या इंजन को अभी भी यह सुनिश्चित करने के लिए अभिव्यक्ति को पार करने की आवश्यकता है कि यह वही प्रश्न है? –