‫۱۲ سال و ۲ ماه قبل، سه‌شنبه ۱۷ مرداد ۱۳۹۱، ساعت ۱۵:۳۳
اینطور که من متوجه شدم ، تا قبل از EF 4.3 ، جدولی به اسم EdmMetadata ساخته می‌شد که مدل رو به صورت hash نگهدای میکرد و فقط مشخص می‌شد که آیا مدل با بانک اطلاعاتی منطبق هست یا نه. اما چون نیاز به نگهداری اطلاعات بیشتری برای migration بود، الان جدول  __MigrationHistory   تولید میشه. 
‫۱۲ سال و ۲ ماه قبل، سه‌شنبه ۱۷ مرداد ۱۳۹۱، ساعت ۱۴:۱۳
ممکنه این سوال مستقیما به اینجا مربوط نشه، اما به هر حال اینجا هم خودشو نشون میده. چرا امکان دسترسی به نام property‌ها به صورت strongly type وجود نداره؟ آیا تو پیاده سازی مشکلی داره؟ 
مثلا در مثال inverse property، باید اسم فیلد معادل به صورت رشته ای ذکر بشه. حالا اگه این اسم تغییر کرد چطور باید ردیابی بشه. 
این مساله به فرض تو بایندینگ ها، مثلا برای dropdownlist ، هم یه مقدار آدم رو نگران میکنه و یکی از ویژگی‌های مثبت استفاده از Linq رو که وجود intelisence و بررسی در زمان کامپایل هست نقض میکنه.
‫۱۲ سال و ۲ ماه قبل، دوشنبه ۱۶ مرداد ۱۳۹۱، ساعت ۱۷:۵۶
با سلام. از بین دو کتابی که در ابتدا معرفی کردید، من code first رو مطالعه کردم. با توجه به اینکه قصد دارم دوره شما رو هم کامل مطالعه کنم، نیاز به مطالعه کتاب DbContext هست؟
‫۱۲ سال و ۲ ماه قبل، یکشنبه ۱۵ مرداد ۱۳۹۱، ساعت ۱۳:۴۲
در مورد نکته هشتم...
من قبلا هم این نظر خودم رو عنوان کردم. ولی به دلیل رعایت همین نکته هشتم، شما حتی منتشرش هم نکردید!
کاملا قبول دارم که اینجا یک پایگاه کاملا فنی هستش و امتیاز مثبتش هم همینه. اما قبول کنید برای یک برنامه نویس ( یا هر حرفه دیگه ای) علاوه بر نکات فنی، یک سری نکات هم هست که شاید بشه بهش گفت اخلاقیات حرفه، یا ترفندهای حرفه یا ...هر اسم دیگه ای. مثل تجربیاتی که مثلا شما از کار در محیط‌های مختلف به دست آوردید، روش‌های به روز نگه داشتن خود، چگونگی طی کردن مراحل پیشرفت و ..
به نظر من شاید بشه  نکات فنی رو از کتاب‌ها دریافت کرد، ولی این نکات که من عنوان کردم حتی اگه نمونه خارج از کشوری هم داشته باشن، شاید کارایی لازم رو در داخل کشور نداشته باشن، یعنی بومی سازی نشدن! و البته این مطالب با مطالب بی فایده ای که بعضی وبلاگ‌ها منتشر می‌کنند و خاطرات و مسایل شخصی خودشون رو در محیط کار مطرح می‌کنند متفاوته.
امیدوارم تونسته باشم منظورم رو بیان کنم.
‫۱۲ سال و ۳ ماه قبل، سه‌شنبه ۳ مرداد ۱۳۹۱، ساعت ۱۸:۱۵
اتفاقا خودم به استفاده از ".." توجه کردم، ولی چون تست نکردم این مورد رو ، تصورم این بود که تو سی شارپ جواب نمیده
‫۱۲ سال و ۳ ماه قبل، سه‌شنبه ۳ مرداد ۱۳۹۱، ساعت ۱۵:۴۷
تا جایی که من متوجه شدم شما در کنترلر File، اسم فایل رو دریافت می‌کنید و اون رو به مسیری داخل App_Data نگاشت میدید و بعد فایل رو از اون مسیر به کاربر return می‌کنید. اگه به این صورته سوالی واسه من پیش اومده:
همونطور که خودتون مثال زدید مهاجم ممکنه به جای اسم فایل یک مسیر مثلا ~/web.config رو به کنترلر بفرسته، خب اگه با این مسیر به صورت یک اسم برخورد بشه مثلا میشه : 

~/App_Data/~/web.config
 درسته؟ یعنی در این صورت هم باز از ریشه، فایل web.config برمیگرده؟
‫۱۲ سال و ۳ ماه قبل، سه‌شنبه ۲۰ تیر ۱۳۹۱، ساعت ۱۴:۳۵
متشکر از پاسخ شما. پس میشه اینطور نتیجه گرفت که :

 موقع استفاده از WCF، با غیرفعال کردن lazy loading فقط entity‌های اصلی بارگذاری می‌شوند و تاثیری روی کارایی برنامه نداره. و در مثال شما ، اگه بخوایم به dept.Employees دسترسی داشته باشیم، باید صریحا اونها رو دریافت کرد.
‫۱۲ سال و ۳ ماه قبل، سه‌شنبه ۲۰ تیر ۱۳۹۱، ساعت ۱۳:۵۵
هنگام استفاده از EF 4 بوسیله WCF، ما خطایی در یافت می‌کنیم با این عنوان:
underlying connection was closed. the connection was closed unexpectedly

جستجو شد و جاهای مختلف اینطور گفته شده که در هنگام استفاده از EF با WCF، باید lazy loading غیرفعال شه ، در غیر اینصورت حلقه ایجاد میشه! مثلا اینجا
حالا این سوال پیش میاد که علت این مسال چیه، آیا راه دیگه ای وجود نداره. و مهمتر اینکه غیر فعال کردن lazy loading کارایی برنامه رو پایین نمیاره؟

‫۱۲ سال و ۳ ماه قبل، دوشنبه ۱۹ تیر ۱۳۹۱، ساعت ۱۴:۲۲
1-  اهمیت نام تولید شده اونجاست که توی navigation property ،  برای insertUserId و deleteUserId مقادیر  user1 و user2 تولید میشه و به فرض وقتی بخوایم نام کاربر درج کننده (user1.username)  را نمایش بدیم، ممکنه به اشتباه نام کاربر حذف کننده (user2.username) 
رو نمایش بدیم. چون user1 و user2 نامهای شفافی نیستن. 
2-  fluent api که فرمودین رو بررسی می‌کنم، ولی راستش متوجه نشدم که روشی که استفاده کردم درست هست یا نه. در واقع به جای استفاده از navigation property‌های خودکار، خودم با اضافه کردن یه property مثلا با نام InsertUsername، نام کاربر درج کننده رو برمیگردونم. ( همون که تو کد کامنت قبلی نوشتم).
اینجا هم به نظرم تا موقعی که از InsertUsername استفاده نشه، مراجعه به دیتابیس انجام نمیشه، درسته؟
‫۱۲ سال و ۳ ماه قبل، دوشنبه ۱۹ تیر ۱۳۹۱، ساعت ۱۳:۲۵
در رابطه با 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 {}
};