نظرات مطالب
روش‌هایی برای بهبود قابلیت دیباگ بسته‌های NuGet
محدودیت با مخزن  خصوصی  گیتلب (Gitlab  Private   Repository):
در حال حاضر این روش با مخازن خصوصی گیتلب بدلیل تفاوت نحوه احراز هویت گیتلب با دیگر CodeHosting‌ها سازگار نیست. و به هنگام دیباگ به جای فایل مورد نظر، صفحه لاگین را برمیگرداند Issue #281 
یک راه حل برای ویژوال استودیو 2019: ایجاد Session برای گیتلب توسط مرورگر داخلی ویژوال استودیو
از طریق View -> Other Windows -> Web Browser به گیتلب خود لاگین کنید.
راه حل برای Gitlab Self-Hosted:
نظرات مطالب
نحوه کار با ftp - بخش اول
امکان دیباگ کردن ریز فعالیت‌های System.Net به صورت زیر وجود دارد:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <system.diagnostics>
   <trace autoflush="true" />
   <sources>
     <source name="System.Net">
       <listeners>
         <add name="MyTraceFile"/>
       </listeners>
     </source>
   </sources>

   <sharedListeners>
     <add
       name="MyTraceFile"
       type="System.Diagnostics.TextWriterTraceListener"
       initializeData="System.Net.trace.log"
               />
   </sharedListeners>

   <switches>
     <add name="System.Net" value="Verbose" />
   </switches>

 </system.diagnostics>
</configuration>
که به فایل app.config و یا web.config قابل افزودن است. به این صورت کلیه هدرهای ارسالی به سرور و ریز فعالیت‌های انجام شده در پشت صحنه‌، در فایلی به نام System.Net.trace.log برای شما ثبت خواهد شد. 
نظرات مطالب
رسم نمودار توسط Kendo Chart
- زمانیکه از kendo ui data source استفاده می‌کنید، نیازی به استفاده از ajax مربوط به jQuery نیست. چون خودش به صورت توکار قابلیت کار با منبع داده‌ی ریموت را به صورت ای‌جکسی دارد. نمونه‌اش در مثال مطلب جاری بکار رفته‌است. به تنظیمات قسمت transport آن دقت کنید.
اطلاعات بیشتر: «کار با Kendo UI DataSource» قسمت «استفاده از منابع داده راه دور » و همچنین مثال آن
- همچنین در قسمت تنظیمات kendo ui data source امکان تعریف نوع فیلدهای مورد استفاده هم وجود دارند. نمونه‌ی آن در مطلب « صفحه بندی، مرتب سازی و جستجوی پویای اطلاعات به کمک Kendo UI Grid» استفاده شده‌است. متن «تعیین نوع فیلد برای جستجوی پویا مهم است» را در آن جستجو کنید.  بدون تعیین نوع داده‌ها، همه‌ی اطلاعات، رشته‌ای پردازش می‌شوند.
نظرات مطالب
آشنایی با NuGet - قسمت اول
با سلام و خسته نباشید
من یه مشکل کوچیک دارم تو نوگت با ویژوال استدیو 2012 update 2 یا ویژوال استدیو 2013 
به آدرس https در package source وصل نمیشه(تا اونجایی که فهمیدم به خاطر سیاست‌های داخلی اینترنت ایرانه)،میدونم با تغییر دادن آدرس به http مشکل حل میشه!
ولی متاسفانه الان هر چی میگردم اون آدرس رو پیدا نمیکنم
خواستم ببینم اگر اون آدرس package source رو دارید برام قرار بدید
 با تشکر از شما
نظرات مطالب
EF Code First #4
connectionStrings   رو به این دو صورت میگذارم: 

 <add name="TestContext"
           connectionString="Data Source=localhost;Initial Catalog=Test;User ID=sa;Password=123;MultipleActiveResultSets=True;"
           providerName="System.Data.EntityClient" />
و
<add name="TestContext"
         connectionString="Data Source=localhost;Initial Catalog=Test;Integrated Security=True"
         providerName="System.Data.EntityClient" />
هر دو یه مشکل رو دارند.فکر نمی‌کنم چون اگر مشکل دسترسی اکانت بود منطقا بدون Migration هم باید خطا می‌داد؟!
نظرات مطالب
AngularJS #1
These files are parsed by our docs parser (nodejs script), source can be found here:
https://github.com/angular/angular.js/tree/master/docs/src
It is combined together with docs parsed from the source and result is html, served at docs.angularjs.org
ماخذ
نظرات مطالب
وادار کردن EF Code first به ساخت بانک اطلاعاتی پیش از شروع به کار برنامه
یکی از روش‌های تعریف رشته اتصالی است:
public class CustomContext : DbContext
{
     public CustomContext() :  base("AppConfigConnectionStringName") { }

// or
public class CustomContext : DbContext
{
    public CustomContext() :
            base(@"Data Source=(local);Initial Catalog=MyDBName;Integrated Security=True;Pooling=False") { }
روش دیگر :
var ctx = new MyContext();
ctx.Database.Connection.ConnectionString = "...";
و یا
Database.DefaultConnectionFactory = 
new SqlConnectionFactory(@"Data Source=(local);Initial Catalog=MyDBName;Integrated Security=True;Pooling=False");
و ...
پاسخ به بازخورد‌های پروژه‌ها
'System.Data.Entity.Core.EntityException'
من از visual studio 2013 و  SQL server 2014 استفاده میکنم.
در فایل Web.config
این تغییرات رو دادم باز هم نتیجه همون هستش.
 <connectionStrings>
    <clear />
    <add name="DefaultConnection" connectionString="Data Source=.;Initial Catalog=MVC5DB;Integrated Security = true" providerName="System.Data.SqlClient" />
  </connectionStrings>

.
.
.
.
 <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="Data Source=.;Integrated Security=True" />
      </parameters>
    </defaultConnectionFactory>

پاسخ به بازخورد‌های پروژه‌ها
استفاده از pdfreport برای اولین بار
لینک مثال‌ها خطا میده
Source control for your project is currently unavailable. Source code cannot be accessed at this time.
You can check our  System Outages  page to see if this is a known issue, otherwise you can report the problem through our  Contact Us  page. 
مطالب
اصول طراحی شی گرا SOLID - #بخش دوم اصل OCP
در قسمت قبل  در مورد اصل Single responsibility Principle  یا به اختصار SRP صحبت شد. در این قسمت قصد داریم اصل دوم از اصول SOLID را مورد بررسی قرار دهیم.

اصل 2 ) O - OCP – Open Close Principle
فرض میکنیم که شما میخواهید یک طبقه بین طبقه‌ی اول و دوم خانه‌ی 2 طبقه‌ی خود اضافه کنید. فکرمیکنید امکان پذیر است؟

راه حل هایی که ممکن است به ذهن شما خطور کنند :
1- زمانی که برای اولین بار در حال ساخت خانه هستید آن را 3 طبقه بسازید و طبقه‌ی وسط را خالی نگه دارید.اینطوری هر زمان که شما بخواهید میتوانید از آن استفاده کنید. به هر حال این هم یک راه حل است.
2- خراب کردن طبقه دوم و ساخت دو طبقه‌ی جدید که خوب اصلا معقول نیست.
کد زیر را مشاهده کنید :
public class EmployeeDB
{
    public void Insert(Employee e) 
    {
        //Database Logic written here
    }
    public Employee Select() 
    {
        //Database Logic written here
    }
}
متد Select در کلاس EmployeeDB توسط کاربران و مدیر مورد استفاده قرار میگیرد. در این بین ممکن است مدیر نیاز داشته باشد تغییراتی را در آن انجام دهد. اگر مدیر این کار را برای برآورده کردن نیاز خود انجام دهد ،روی دیگر قسمت‌ها نیز تاثیر میگذارد، به علاوه ایجاد تغییرات در راه حل‌های تست شده‌ی موجود ممکن است موجب خطاهای غیر منتظره ای شود.
چگونه ممکن است که رفتار یک برنامه تغییر کند بدون اینکه کد آن ویرایش شود؟ چگونه می‌توانیم بدون تغییر یک موجودیت نرم افزاری کارکرد آن را تغییر دهیم؟ 
اصل OCP میگوید : "ماژول‌های نرم افزار باید برای تغییرات بسته و برای توسعه باز باشند."
راه حل هایی که OCP را نقض نمیکنند :
1- استفاده از وراثت (inheritance):
ایجاد یک کلاس جدید به نام EmployeeManagerDB که از کلاس EmployeeDB ارث بری کند و متد Select آن را جهت نیاز خود بازنویسی کند.
public class EmployeeDB
{      
    public virtual Employee Select()
    {
        //Old Select Method
    }
}
public class EmployeeManagerDB : EmployeeDB
{
    public override Employee Select()
    {
        //Select method as per Manager
        //UI requirement
    }
}
این انتخاب خیلی خوبی است در صورتی که این تغییرات در زمان طراحی اولیه پیش بینی شده باشد و همکنون قابل استفاده باشند.
کد UI هم به شکل زیر خواهد بود :
//Normal Screen
EmployeeDB objEmpDb = new EmployeeDB();
Employee objEmp = objEmpDb.Select();

//Manager Screen
EmployeeDB objEmpDb = new EmployeeManagerDB();
Employee objEmp = objEmpDb.Select();
2- متدهای  الحاقی (Extension Method):
اگر شما از NET 3.5.  یا بالاتر از آن استفاده میکنید، دومین راه استفاده از متدهای الحاقی است که به شما اجازه میدهد بدون هیچ دست زدنی به نوع‌های موجود، متدهای جدیدی را به آنها اضافه کنید.
Public static class MyExtensionMethod{
    public static Employee managerSelect(this EmployeeDB employeeDB) {
//Select method as per Manager
    }
}

//Manager Screen
Employee objEmp = EmployeeDB.managerSelect();
البته ممکن است راه‌های دیگری هم برای رسیدن به این منظور وجود داشته باشد.
درقسمت‌های بعدی قانون‌های دیگر را بررسی خواهیم کرد.