সেখানে নেই Detach(object entity)
উপর DbContext
।
আমার কি প্রথমে ইএফ কোডে অবজেক্টগুলি বিচ্ছিন্ন করার ক্ষমতা আছে?
সেখানে নেই Detach(object entity)
উপর DbContext
।
আমার কি প্রথমে ইএফ কোডে অবজেক্টগুলি বিচ্ছিন্ন করার ক্ষমতা আছে?
উত্তর:
আপনি যদি বিদ্যমান অবজেক্টটি বিচ্ছিন্ন করতে চান তবে @ স্যালুমার পরামর্শ অনুসরণ করুন। আপনি যদি পরিবর্তনগুলি ট্র্যাকিং ছাড়াই লোড করতে চান তবে ব্যবহার করুন:
var data = context.MyEntities.AsNoTracking().Where(...).ToList();
মন্তব্য হিসাবে উল্লিখিত হিসাবে এটি সত্তা সম্পূর্ণরূপে বিচ্ছিন্ন করবে না। তারা এখনও সংযুক্ত এবং অলস লোডিংয়ের কাজ করে তবে সত্তা ট্র্যাক করা হয় না। উদাহরণস্বরূপ এটি ব্যবহার করা উচিত যদি আপনি কেবল ডেটা পড়তে সত্তা লোড করতে চান এবং আপনি সেগুলি পরিবর্তন করার পরিকল্পনা করেন না।
এটি একটি বিকল্প:
dbContext.Entry(entity).State = EntityState.Detached;
entity
অবশ্যই এমন কোনও ধরণের একটি বস্তুগত বস্তু হতে হবে যা আপনার মডেল শ্রেণীর (ব্যক্তি, গ্রাহক, আদেশ ইত্যাদি) অংশ part আপনি সরাসরি কোনও আইকোয়্যারেবল <T> এ প্রবেশ করতে পারবেন না dbContext.Entry(...)
। এই প্রশ্নটি কি আপনি বোঝাতে চেয়েছেন?
Detached
। আপনি যদি ডিবি থেকে সত্ত্বাগুলি কোনও প্রসঙ্গে সংযুক্ত না করে লোড করতে চান (কোনও ট্র্যাকিং পরিবর্তন হবেন না), ব্যবহার করুন AsNoTracking
।
Detached
।
using(ctx){ return ctx....ToList(); }
। এই জাতীয় ক্ষেত্রে ব্যবহার করাAsNoTracking()
অনেক অর্থবোধ করতে পারে কারণ আমি অযথা অবজেক্টের প্রসঙ্গটি পূরণ করা সঞ্চয় করব। আমার ধারণা এটির সম্ভবত বিশেষত বড় তালিকাগুলির জন্য একটি পারফরম্যান্স এবং মেমরির খরচ উপকার হবে?