در حین لاگین شما SetAuthCookie رو به userName تنظیم کردید. بعد نتیجهاش این شده، هرجایی که نیاز به یافتن Id کاربر بوده، مجبور هستیم یکبار کوئری بگیریم و این مورد زیاد در برنامه وجود داره. بهتره در زمان فراخوانی SetAuthCookie، مقدار userId رو که داریم به عنوان پارامتر بهش پاس بدیم. به این ترتیب در خیلی از جاها جلو خواهیم افتاد.
مثلا الان اکثر کلاسهای موجودیتها چنین تعریفی رو دارند:
میشه کمی این تعریف رو اصلاح کرد و بجایش نوشت:
حالا موقع ست کردن اطلاعات این کلاس، دیگر نیازی نیست تا یکبار id کاربر از دیتابیس Find شود (چون در User.Identity.Name موجود هست؛ مهم نیست که Name اینجا داره، مهم کاربرد آن است در برنامه). فقط کافی هست این مقدار به UserId نسبت داده شود.
تقریبا اکثر کلاسهای دومین شما نکته کار با کلیدهای خارجی رو جهت کاهش رفت و برگشت به دیتابیس ندارند.
مثلا الان اکثر کلاسهای موجودیتها چنین تعریفی رو دارند:
public class SomeName { public virtual User User { get; set; } }
[ForeignKey("UserId")] public virtual User User { set; get; } public int? UserId { set; get; }
تقریبا اکثر کلاسهای دومین شما نکته کار با کلیدهای خارجی رو جهت کاهش رفت و برگشت به دیتابیس ندارند.