2017-02-02 9 views
7

असल में मेरे पास एक लिंक क्वेरी है जो एक इकाई और इसकी कुछ नेविगेशन गुणों को प्राप्त करती है।AsNoTracking() और

context.MyEntity 
    .AsNoTracking() 
    .Include(i=> i.Nav1) 
    .Include(i=> i.Nav2) 
    .Where(x=> x.Prop1==1) 
    .FirstOrDefault(); 

अब मेरे सवाल यह है:

पर्याप्त इस क्वेरी है MyEntity और NAv1, Nav2 ट्रैक नहीं के लिए या प्रत्येक नेविगेशन संपत्ति के लिए AsNoTracking जोड़ना होगा। इस तरह:

context.MyEntity 
    .AsNoTracking() 
    .Include(i=> i.Nav1) 
    .AsNoTracking() 
    .Include(i=> i.Nav2) 
    .AsNoTracking() 
    .Where(x=> x.Prop1==1) 
    .FirstOrDefault(); 
+1

प्रति प्रश्न एक बार आपको केवल 'AsNoTracking' की आवश्यकता है, इसलिए आपका पहला उदाहरण सही है। मेरा मानना ​​है कि दूसरा एक रन टाइम अपवाद फेंक देगा (सुनिश्चित नहीं है कि कौन सा)। – Igor

+0

यदि आप एकाधिक LINQ विधियों को श्रृंखलाबद्ध करते हैं तो आप हमेशा पूर्व विधि से लौटा अनुक्रम को निम्नलिखित में पास करते हैं। तो 'AsNoTracking' के बाद आपके पास एक प्रश्न है जहां लौटाई गई संस्थाओं को आपकी सहायता के लिए –

+0

TKS कैश नहीं किया जाएगा –

उत्तर

4

AsNoTracking उपयोग आप अपने सभी क्वेरी पैरामीटर पूरा करने के बाद लेकिन इससे पहले कि इससे पहले कि आप स्मृति में ले जाएं। इस उदाहरण में, आप चाहेंगे:

context.MyEntity 
    .Include(i=> i.Nav1) 
    .Include(i=> i.Nav2) 
    .Where(x=> x.Prop1==1) 
    .AsNoTracking() 
    .FirstOrDefault(); 

मूल इकाई के किसी भी बच्चे की वस्तुओं को ट्रैक नहीं किया जाएगा।

संबंधित मुद्दे