در رابطه با lazy loading سئوالی داشتم. در روش db first ، خود به خود navigation propertyها در مدل ساخته میشه.از اونجایی که lazy loading به طور پیش فرض فعال هست ، اینطور که شما اینجا توضیح دادید هیچکدام از navigation propertyها به جداول موردنظر رجوع نمیکنند. اگه تا اینجا رو درست گفته باشم سئوال اصلی من اینه:
وقتی جداول بزرگ باشند و تعداد navigation propertyها زیاد، مخصوصا وقتی مراجعه به یک جدول چندبار اتفاق بیفتد ( مثلا فیلدهایی مثل InsertUserId و DeleteUserId داشته باشیم که هردو به جدول user مراجعه میکنند) EF نامهای نامناسبی تولید میکنه که هنگام استفاده نمیشه تشخیص داد کدوم یکی مثلا به InsertUserId و کدوم یکی به DeleteUserId مربوط میشه. اگر هم بخوایم دستی نامگذاریها رو تغییر بدیم، علاوه بر وقتگیر بودن، با هربار تغییر مدل، دوباره باید اینکار رو تکرار کنیم.
راه حلی که به ذهن من میرسه اینه که توی یه partial class، یه همچین property هایی اضافه کنم.(کد زیر) در واقع موقع نمایش در گرید، از InsertUsername به عنوان نام کاربری درج کننده استفاده میکنم. امیدوارم تونسته باشم درست توضیح بدم. میخوام بدونم این روش تا چه حد درسته.
public string InsertUsername
{
get { return DB.Users.Where(x=>x.Id == InsertUserId).Select(x=>x.Username).FirstOr Default(); }
private set {}
};