نظرات مطالب
نظرات مطالب
ASP.NET MVC #2
برای توضیحات بیشتر مراجعه کنید به قسمت پنجم. یک قسمت کامل به آن اختصاص داده شده.
برای افزودن لیست Claims کاربر موجود در بانک اطلاعاتی به لیست Claims کاربر وارد شدهی توسط اکتیو دایرکتوری، باید از یک IClaimsTransformation سفارشی استفاده کنید تا این نگاشت را انجام دهد (نمونهاش در مطلب « سفارشی سازی ASP.NET Core Identity - قسمت چهارم - User Claims » به نحو دیگری استفاده شدهاست):
پیاده سازی کامل آن در اینجا
و برای ثبت آن:
public class ApplicationClaimsTransformation : IClaimsTransformation { }
و برای ثبت آن:
services.AddScoped<IClaimsTransformation, ApplicationClaimsTransformation>();
- کاری که میخوای، منطقا زیر سؤاله. هم قرار نال پذیر باشه. هم کاربر باید اجبارا پرش کنه! یعنی چی اینکار؟!
- در مورد ویژگیهای اعتبار سنجی سفارشی و مدیریت کدهای سمت کلاینت اونها مطلب در سایت موجوده:
طراحی ValidationAttribute دلخواه و هماهنگ سازی آن با ASP.NET MVC
همان طور که میدانید نسخه 5 (نهایی) از EF به همراه Visual Studio 2012 منتشر خواهد شد (...) و قابلیتهای کلیدی افزوده شده به آن عبارتند از:
بنابراین روند توسعه EF از این پس کاملا قابل پیگیری (و شاید قابل تغییر) است.(...)
قابلیتهای جدیدی که برای EF نسخه 6 در نظر گرفته شده اند عبارتند از:
- پشتیبانی از Enum در هر سه حالت (Database First, Code First, Model First)
- پشتیبانی از Tabel-valued Function در حالت Database First
- پشتیبانی از دادههای جفرافیایی در هر سه حالت (Database First, Code First, Model First)
- افزایش کارائی قابل توجه در LINQ To Entites و Entity SQL (...)
- قابلیت داشتن چند دیاگرام برای یک مدل
- قابلیت ایمپورت دسته ای Stored Procedure ها
بنابراین روند توسعه EF از این پس کاملا قابل پیگیری (و شاید قابل تغییر) است.(...)
قابلیتهای جدیدی که برای EF نسخه 6 در نظر گرفته شده اند عبارتند از:
- بهره گیری از قابلیت async در دات نت 4.5 و معرفی Async Query & Update
public async Task<Store> FindClosestStore(DbGeography location) { using (var context = new StoreContext()) { return await (from s in context.Stores orderby s.Location.Distance(location) select s).FirstAsync(); } }
- پشتیبانی از نگاشت Stored Procedure و Function در حالت Code First
- پشتیبانی از Code First conventions سفارشی (یک کاربرد آن برای جلوگیری از حجم زیاد کد نویسی در هنگام تولید مدل OnModelCreating) (...)
فقط برای یکبار از منوی Tools در ویژوال استدیو، Options را باز کنید و در قسمت جستجوی آن، عبارت Intellitrace را بنویسید و اگر چیزی پیدا شد، تیک Enable Intellitrace را بردارید تا غیر فعال شود. همچنین مجدد Suppress JIT optimization را جستجو کنید و تیک آن را بزنید تا فعال شود.
میشه این بخش رو بیشتر توضیح بدید برای چه منظور این کار رو میکنیم؟
universal apps برای پلتفرمهای مختلف مایکروسافت هست فقط. این مطلب یک قسمت اول هم داره: شروع کار با Apache Cordova در ویژوال استودیو #1. اونجا توضیح داده که این روش چند سکویی هست (یعنی فقط مختص به اندروید نیست). دسترسی به امکانات native دستگاهها رو هم داره.
البته فقط این روش نیست که الان استفاده از جاوا اسکریپت رو شروع کرده برای توسعهی برنامههای موبایل چندسکویی. شرکت تلریک هم اخیرا native script رو ارائه داده: http://www.telerik.com/nativescript
پاسخ به بازخوردهای پروژهها
تعداد کانکشن ها
- مهم نیست. ممکن است EF بسته شدن یک کانکشن را گزارش ندهد. خصوصا مواردی که در ابتدای کار جهت تنظیمات دیتابیس در پشت صحنه انجام میدهد.
- اضافه شدنها را در قسمت logs خام آن میتوانید مشاهده کنید. یک گزارش خام JSON مانند است از تمام اتفاقات رخداده. ممکن است ابزارهایی مانند browser link یا موارد مشابهی که توسط ویژوال استودیو فعال شدهاند، سبب ارسال درخواستی به سرور شوند.
- اضافه شدنها را در قسمت logs خام آن میتوانید مشاهده کنید. یک گزارش خام JSON مانند است از تمام اتفاقات رخداده. ممکن است ابزارهایی مانند browser link یا موارد مشابهی که توسط ویژوال استودیو فعال شدهاند، سبب ارسال درخواستی به سرور شوند.
در ویژوال استودیو بر روی این قسمت break point گذاشتید و مقدار آنرا بررسی کردید؟ اگر بله، بله. این مورد اشارهگری هست به کل یک جدول. کار دیباگر و visualizer آن، اجرای این قسمت از کد است (یعنی یک ToList را در اینجا بر روی آن اجرا میکند تا بتوانید مقدار آنرا مشاهده کنید). یعنی بارگذاری کل جدول مرتبط با آن. اما اگر این قطعه کد را وادار به اجرای زود هنگام نکنید، یک DbSet بیشتر نیست که در کل زنجیرهی LINQ تعریف شده، به صورت یک عبارت تفسیر خواهد شد و نه اینکه به اینجا رسید، اجرا میشود.
اطلاعات بیشتر: «تفاوت بین IQueryable و IEnumerable در حین کار با ORMs»