سلام خسته نباشید.
میخواستم بپرسم بین دو دستور زیر کدام اصولی تر و بهینه تر است ؟
db.Tbl_Users.Where(u=>u.id == 1).FirstOrDefault();
یا
db.Tbl_Users.FirstOrDefault(u=>u.id == 1);
یا دستورات دیگری مثل :
Single()--------SingleOrDefault();
و....
دستور اول اولین رکوردی که پیدا کنه بازگردانی میکنه
دستور دوم دنبال یک رکورد میگرده و اگه دوتا پیدا کنه یک Exception با متن Contains more than one element صادر میکنه
متد هایی که با پسوند OrDefault هم تموم میشن کارشون اینه که اگه رکورد موردنظر رو پیدا نکنن null برمیگردونند.
الان بهتره where بزنیم وشرط رو درونش قرار بدیم بعد FirstOrDefault(); بزنیم ?
یا اینکه شرط رو درون FirstOrDefault(); قرار بدیم و دیگه where نزنیم؟
در نهایت در هر دو حالت یک T-SQL مشابه تولید میشه. صرفا در حالت دوم کد کوتاه تری دارید.
فرقی نمی کنه مهندس خود ef بر گرفته از ado.net هستش شما اینقدر باید ازین کد ها بزنید که عملا هیچی از بهینه بودم در اندازه کد ها متوجه نمیشید بلکه بیشتر بحث سر چطور کوئری زدن و فچ کردن داده هاست که هرکی به روش خودش میزنه
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)