আমি প্রচুর প্রকল্প দেখতে পাচ্ছি যেগুলির সংগ্রহস্থল রয়েছে যাগুলির উদাহরণগুলি ফিরে আসে IQueryable। এটি IQueryableঅন্য কোড দ্বারা অতিরিক্ত ফিল্টার এবং বাছাই করতে পারে যা বিভিন্ন এসকিউএল উত্পন্ন হওয়ার জন্য অনুবাদ করে। আমি জানতে আগ্রহী যে এই প্যাটার্নটি কোথা থেকে এসেছে এবং এটি একটি ভাল ধারণা কিনা।
আমার সবচেয়ে বড় উদ্বেগ হ'ল একটি IQueryableহ'ল প্রতিশ্রুতি হ'ল ডেটাবেসটি পরে যখন এটি গণনা করা হয়। এর অর্থ হল একটি ত্রুটি সংগ্রহস্থলের বাইরে ফেলে দেওয়া হবে। এর অর্থ এই হতে পারে যে কোনও সত্তা ফ্রেমওয়ার্ক ব্যতিক্রম অ্যাপ্লিকেশনটির একটি পৃথক স্তরে নিক্ষেপ করা হয়।
আমি অতীতে একাধিক অ্যাক্টিভ রেজাল্ট সেটের (এমএআরএস) সমস্যাগুলিও ছড়িয়েছি (বিশেষত লেনদেনের সময়) এবং এই পদ্ধতির মতো মনে হচ্ছে এটি এর ফলে প্রায়শই ঘটে।
আমি সর্বদা কল করেছি AsEnumerableবা ToArrayআমার প্রতিটি লিনকিউ এক্সপ্রেশনের শেষে রেপোজিটারি কোড ছাড়ার আগে ডাটাবেস হিট হয়েছে তা নিশ্চিত করার জন্য।
আমি ভাবছি যদি IQueryableকোনও ডেটা স্তরের জন্য বিল্ডিং ব্লক হিসাবে ফিরে আসা কার্যকর হতে পারে। এর চেয়েও বড় আকারের গড়ে তুলতে আমি একটি রিপোজিটরির সাথে অন্য একটি সংগ্রহস্থলের কল দিয়ে বেশ কিছু অমিতব্যয়ী কোড দেখেছি IQueryable।
whereএকটি বিলম্বিত একটি শৃঙ্খলা যুক্ত করে IQueryable, আপনি কেবল তারের উপরের তথ্য পাঠাতে হবে , পুরো ফলাফল সেট নয় set