نظرات مطالب
EF Code First #1
یک موتور اصلی EF بیشتر وجود نداره. برای کار کردن با این موتور اصلی سه روش حداقل تدارک دیده شده:
الف) database first: مربوط به زمانیکه یک دیتابیس از پیش طراحی شده با ساختار جداول و ارتباطات آن موجود است. این روش، ساختار بانک اطلاعاتی شما رو مهندسی معکوس کرده و یک سری کد و دیاگرام را برای استفاده توسط موتور اصلی EF تولید می‌کنه.
ب) روش model first: در VS.NET می‌تونید طراحی‌های مرتبط با جداول، کلاس‌ها و روابط رو انجام بدید. کدهای اضافی برای کار با موتور EF و همچنین به روز رسانی بانک اطلاعاتی رو به صورت خودکار انجام خواهد داد.
ج) روش code first: در این روش دیگر خبری از طراح بصری نیست. کار با کدنویسی و طراحی کلاس‌ها و ایجاد روابط بین آن‌ها توسط برنامه نویس شروع می‌شود. نهایتا این کلاس‌ها توسط موتور EF استفاده خواهند شد. امکان تبدیل این کلاس‌ها به بانک اطلاعاتی متناظر و همچنین به روز رسانی خودکار بانک اطلاعاتی با تغییر ساختار کلاس‌ها هم پیش بینی شده. روش code first بهترین حالت است برای کسانی که نمی‌خواهند از انبوهی از کدهای تولید شده به صورت خودکار (حاصل از مهندسی معکوس یک بانک اطلاعاتی موجود) استفاده کنند و می‌خواهند کنترل بیشتری بر روابط و اختصاصی سازی آن‌ها داشته باشند. در این حالت می‌تونید بدون نیاز به یک بانک اطلاعاتی یک برنامه را کامل کنید (منهای مباحث تست سیستم).
روش code first در حال حاضر روشی است که بیشتر توسط تیم EF تبلیغ می‌شود و در حال توسعه است. مابقی رو هم کم کم دارند تبدیل می‌کنند به پوسته‌ای برای حالت code first. مثلا ابزار تهیه کردند برای مهندسی معکوس یک بانک اطلاعاتی موجود به روش code first. کد نهایی تمیزتری داره؛ چون کلاس‌ها را خودتان طراحی می‌کنید و توسط ابزارها به صورت خودکار تولید نمی‌شوند، کنترل بیشتر و نهایتا کیفیت بالاتری دارند. ساده است؛ درگیر نگهداری edmx modelها نخواهید بود. به روز رسانی بانک اطلاعاتی آن هم می‌تواند کاملا خودکار شود.

برای اطلاعات بیشتر در مورد مزایای این روش یا تاریخچه EF متن قسمت جاری را یکبار مطالعه کرده و قسمت‌های «مروری سریع بر تاریخچه Entity framework code first» و «مزایای EF Code first» را بررسی کنید.
+ کل قسمت EF از اینجا به صورت یک فایل PDF قابل دریافت است. در مورد اکثر مواردی که عنوان کردید به صورت مجزا بحث شده و توضیحات کافی ارائه شدن.
نظرات مطالب
EF Code First #12
- می‌شود به ازای هر سال یک Context مجزا با Entity‌های مجزا درست کرد. فایل مثالی که با دو Context کار می‌کند در نظرات همان مطلب «استفاده از چندین Context در EF 6 Code first»  پیوست شده‌است: Sample25.cs 
ولی این روش سبب خواهد شد مجبور شوید به ازای هر سال، کوئری‌های LINQ مختلفی را هم بنویسید. یعنی لایه سرویس برنامه را باید هربار بازنویسی کنید، فقط برای اینکه نمی‌خواهید ساختار بانک اطلاعاتی را به روز کنید. چرا؟
- EF با استفاده از امکانات Migration به سادگی ساختار بانک‌های اطلاعاتی را به صورت خودکار می‌تواند به روز کند. باید هم اینکار را انجام بدهید چون کوئری‌های مختلف LINQ شما نهایتا به SQL ترجمه شده و چون یک سری از فیلدها در بانک اطلاعاتی سال قبل حضور ندارند، عملا برنامه کار نخواهد کرد. یعنی قسمت عمده‌ای از برنامه شما (کل لایه سرویس) از کار می‌افتد. کامپایل شدن برنامه در این حالت مهم نیست. آیا مثلا تنها کوئری GetAll ایی که تهیه شده، بر روی تمام سال‌ها و با ساختارهای مختلف اجرا می‌شود؟ خیر.
- سپس برای کار با بانک‌های اطلاعاتی دارای یک ساختار و مربوط به سال‌های مختلف، امکان تعیین رشته اتصالی به ازای هر Context هست:
context.Database.Connection.ConnectionString = "...";
نظرات مطالب
پیاده سازی Open Search در ASP.NET MVC
من تست کردم برای من press tab to search را نشون میده! برای خودم هم عجیب هست که چه جوری می‌فهمه بدون اینکه سایت مشخص کرده باشد. حدس می‌زنم که باید حداقل یک بار از جست و جوی سایت استفاده کنید تا مرورگر این را به صورت هوشمند متوجه شود.

اشتراک‌ها
کامل بودن یک Model یا خالص بودن کدام را ترجیح دهیم !؟

همیشه در طراحی مدل‌ها مهمترین سوال این است مدلی که در حال  طراحی است باید تمامی کسب و کار را در خود جای دهد و یا خالص باشد و کمترین وابستگی را داشته باشد در این مقاله این برسی می‌خوانید .

کامل بودن یک Model یا خالص بودن کدام را ترجیح دهیم !؟
نظرات مطالب
معرفی پروژه Orchard
یافتن مستندات درباره طرز کار یک CMS در یک جا عملا غیر ممکن است حتی CMS‌های قدیمی‌تر نیز چنین داکیومنت هایی ندارند حال سوال من این است که هدف شما از یادگیری نحوه عملکرد orchad چیست ؟
اگر هدف ساخت ماژول و سفارشی کردن آن است (البته منظور سفارشی کردن ماژول‌ها و UI است نه core برنامه) این کار نیازی به دانستن عملکرد کامل آن نیست و مستندات هم در وب سایت آن و هم در فروم codeplex  موجود است فیلم‌های آموزشی pluralsight نیز می‌تواند شروع خوبی باشد در این منابع تمام آنچه شما نیاز دارید موجود است
اگر هدف شما تغییر core برنامه است این کار به هیچ وجه توصیه نمی‌شود چون باعث بروز مشکلاتی فراوان از جمله عدم امکان به نسخه‌های بالاتر خواهد شد
اگر هم هدف آموزشی است  قطعا orchard شروع خوبی نیست
نظرات مطالب
غنی سازی کامپایلر C# 9.0 با افزونه‌ها
یک نکته‌ی تکمیلی: چگونه اخطارهای code styleها را هم در پروسه‌ی Build وارد کنیم؟

Roslyn analyzers به همراه پیشنهادهایی در مورد code styles هم هستند؛ برای مثال توصیه‌ی به استفاده‌ی از var و یا عکس آن. می‌توان این توصیه‌ها را تبدیل به اجبار هم کرد تا در یک تیم، code styles یکدستی ارائه شود و روش آن، وارد کردن این توصیه‌ها به پروسه‌ی build است. برای اینکار می‌توان فایل csproj را به نحو زیر ویرایش کرد:
<PropertyGroup>
   <TargetFramework>net6.0</TargetFramework>

   <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
</PropertyGroup>
اکنون با فعالسازی EnforceCodeStyleInBuild، یک مرحله‌ی دیگر نیز باقی است. باید به فایل editorconfig. مراجعه و تنظیم زیر را به آن افزود:
[*.cs]
# Default severity for analyzer diagnostics with category 'Style' (escalated to build warnings)
dotnet_analyzer_diagnostic.category-Style.severity = warning
پس از این تنظیمات، توصیه‌های مرتبط با code-styles، به صورت اخطارهای کامپایلر ظاهر می‌شوند و یا حتی اگر علاقمند بودید، می‌توان مقدار warning فوق را به error نیز تغییر داد تا دیگر در صورت وجود توصیه‌ی خاصی، برنامه کامپایل نشود.

بدیهی است در این صورت، روش لغو توصیه‌ی خاصی به صورت زیر است:
 dotnet_diagnostic.IDE0008.severity = none
IDE0008 برای نمونه شماره‌ی یکی از توصیه‌هایی است که با آن موافق نیستید. در این حالت فقط کافی است severity آن‌را به none تنظیم کنید تا دیگر در پروسه‌ی build ظاهر نشود.
نظرات اشتراک‌ها
Visual Studio 2012 نسخه Final عرضه شد
ممکنه مشکل از افزونه‌ها باشند. VS.NET را در حالت safe mode اجرا و بعد مصرف حافظه آن‌را بررسی کنید:
"c:\Program Files\Microsoft Visual Studio version\Common7\IDE\devenv.exe" /safemode /nosplash /log
شبیه به همین مساله با فایرفاکس هم هست. در حالت safe mode (یعنی اجرا توسط help menu -> restart with add-ons disabled) این برنامه آنچنان مصرف حافظه‌ای ندارد. تعداد افزونه‌ها که بالا رفت، چند گیگ حافظه مصرف می‌کند.