আমাদের কাছে একটি ডেটা স্তর রয়েছে যা লিনক থেকে এসকিউএল জড়িয়ে দেয়। এই ডেটালেয়ারে আমাদের এই পদ্ধতিটি রয়েছে (সরলীকৃত)
int InsertReport(Report report)
{
db.Reports.InsertOnSubmit(report);
db.SubmitChanges();
return report.ID;
}
পরিবর্তনগুলি জমা দেওয়ার সময়, রিপোর্ট আইডিটি ডাটাবেসের মান সহ আপডেট হয় যা আমরা তারপরে ফিরে আসি।
কলিং পাশ থেকে এটি দেখতে এরকম দেখাচ্ছে (সরলীকৃত)
var report = new Report();
DataLayer.InsertReport(report);
// Do something with report.ID
কোডটি দেখে, আইডিটি এক ধরণের পার্শ্ব প্রতিক্রিয়া হিসাবে InsertReport ফাংশনের অভ্যন্তরে সেট করা হয়েছে এবং তারপরে আমরা রিটার্নের মানটিকে অগ্রাহ্য করছি।
আমার প্রশ্নটি হল, আমি কি পার্শ্ব প্রতিক্রিয়ার উপর নির্ভর করব এবং পরিবর্তে এর মতো কিছু করব।
void InsertReport(Report report)
{
db.Reports.InsertOnSubmit(report);
db.SubmitChanges();
}
বা আমাদের এটি প্রতিরোধ করা উচিত
int InsertReport(Report report)
{
var newReport = report.Clone();
db.Reports.InsertOnSubmit(newReport);
db.SubmitChanges();
return newReport.ID;
}
এমনকি এমনকি
Report InsertReport(Report report)
{
var newReport = report.Clone();
db.Reports.InsertOnSubmit(newReport);
db.SubmitChanges();
return newReport;
}
এই প্রশ্নটি উত্থাপিত হয়েছিল যখন আমরা একটি ইউনিট পরীক্ষা তৈরি করেছি এবং দেখেছি যে রিপোর্টের প্যারামিটারগুলির আইডি সম্পত্তি আপডেট হবে এবং পার্শ্ব প্রতিক্রিয়ার আচরণকে উপহাস করার জন্য এটি সত্যই পরিষ্কার নয় যে আপনি যদি চান তবে একটি কোডের গন্ধ।