<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های alireza binesh</title><link>https://virgool.ir/feed/@alireza.binesh.2000</link><description></description><language>fa</language><pubDate>2026-11-11 11:00:40</pubDate><image><url>https://files.virgool.ir/upload/users/62401/avatar/avatar.png</url><title>alireza binesh</title><link>https://virgool.ir/@alireza.binesh.2000</link></image><item><title>Fluent Api از چیستی تا کاربرد در Entity Framework</title><link>https://virgool.ir/@alireza.binesh.2000/fluent-api-از-چیستی-تا-کاربرد-در-ef-atpspicgp5ek</link><description>نمونه ای از ساختار Fluent Apiاحتمالا از مطالبی باشد که تا الان با آن برخورد داشتید یا حداقل در موردش شنیده اید، در این مطلب سعی میکنیم بفهمیم Fluent Api چیست و کمی از کاربرد آن در Entity framework خواهیم گفت که امیدوارم مفید باشد. اگر با Entity framework و orm ها اشنایی ندارید ابتدا درمورد آن ها کمی مطالعه کنید. Fluent Api چیست؟در واقع Fluent Api یک روش طراحی شی گرا Api هست که مبتنی بر فراخوانی پشت سر هم متد ها             ( method chaining) و استفاده از آن ها است که با هدف بالابردن خوانایی کد ها طراحی شده. این سیستم  در جاهای زیادی کاربرد دارد، که از جمله آن میتوان به (Entity Framework(EF در asp.Net اشاره کرد.Fluent Interface چیست؟رابط های fluent یا fluent Interface ها درواقع رابط هایی هستند که با استفاده از روش بالا طراحی شدند.همانند کلاس Employee در تصویر اول.کاربرد Fluent Api در EFدر Entity framework دو روش برای پیکربندی کلاس ها وجود دارد.1. استفاده از annotation هااز attribute های  dataAnnotation ها برای پیکربندی کلاس ها استفاده میشود که میتوانند بر روی هر کلاس entity اعمال شوند.اتریبیوت هایی نظیر key , Timestamp , Required و ... که نحوه استفاده برخی از آن ها را در تصویر زیر مشاهده میکنید.2.استفاده از Fluent Apiاین روش از روش قبل کامل تر است یعنی علاوه بر بدست اوردن تمام ویژگی های روش قبل قابلیت هایی بیشتری نیز داریم، در این روش ما با کلاس EntityTypeBuilder که یک Fluent Interface است سر و کار داریم، به طور مثال برای دو کلاس Student و StudentAddress میتوان رابطه یک به یک یا یک به صفر را به شکل زیر تعریف کرد.  کلاس Studentکلاس StudentAddressایجاد رابطه یک به یک یا یک به صفر با استفاده از روش Fluent Api امیدوارم که این مطلب برای شما مفید بوده باشد و در اخر لینک یک سری از سایت هایی که از ان ها در نوشتن این مطالب استفاده کردم یا اینکه مفید بودند را اورده ام که میتوانید از ان ها استفاده کنید.https://www.entityframeworktutorial.net/code-first/configure-one-to-one-relationship-in-code-first.aspxhttp://www.tahlildadeh.com/ArticleDetails/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-Fluent-API-%d8%af%d8%b1-Code-Firsthttps://www.tutorialspoint.com/entity_framework/entity_framework_data_annotations.htm</description><category>alireza binesh</category><author>alireza binesh</author><pubDate>Wed, 01 Apr 2020 01:33:16 +0430</pubDate></item><item><title>کاربرد و تفاوت package.json و package-lock.json</title><link>https://virgool.ir/@alireza.binesh.2000/کاربرد-و-تفاوت-packagejson-و-package-lockjson-amaqiol7t4ul</link><description>نمایی از یک پروژهاحتمالا در هنگام استفاده از npm به دوفایل package.json و package-lock.json برخورده باشید در این متن میخواهیم قسمتی از کاربرد ان ها و تفاوتشان را باهم بفهمیم. فایل package.json   همانطور که مشاهده میکنید این فایل حاوی لیست اطلاعاتی مانند نام، ورژن و.. از تمام ماژول ها و پکیج هایی هست که پروژه به ان مرتبط است و همچنین اطلاعاتی درباره خود پروژه است نظیر نام، نام مولف و... به طور مثال در شکل بالا، نام پروژه project است و نام مولف (بخش author) خالی گذاشته شده و یا در بخش پکیج های مربوط به پروژه از mongodb  نسخه 3.3.1 استفاده شده ( علامت &#34;^&#34; کنار شماره نسخه نشان دهنده ان است از نسخه های بالاتر هم پشتیبانی میشود یعنی مثلا اگر نسخه بعدی mongodb ارایه شود انوقت شما توانایی این را دارید که ورژن mongodb پروژه خود را ارتقا دهید )این فایل امکان مدیریت بهتر پکیج های یک پروژه رو به برنامه نویس ها میدهد و قابلیت بازتولید پروژه را توسط شما یا فرد دیگری ( درصورت انتشار) بسیار ساده میکند. به اینصورت که فرض کنید شما میخواهید طی یک کار تیمی پروژه خود را به اشتراک بگذارید، در این صورت دیگر لازم نیست کل پکیج های مخصوص پروژه خود را اپلود کنید خصوصا اگر حجم پکیج ها بسیار بالا و پروژه شما سنگین باشد. کافیست این فایل را اپلود کرده و فرد گیرنده با اجرای دستوراتی تمام پکیج ها و ماژول های لازم را برای اجرای پروژه بدست اورد. با وجود این مزیت ها در مورد این فایل، گاهی وقت ها مشکلاتی ایجاد میشود. به طورمثال فرض کنید شما در سال 2019 در پروژه خود از نسخه 3.3.1 mongodb ( یک نوع دیتابیس است) استفاده کرده باشید و این پروژه خود را به اشتراک گذاشته باشید و چندسال بعد  (مثلا 2023 ) فردی پیدا شده و قصد دارد از پروژه شما استفاده کند فرض کنید در سال 2023 نسخه شماره 4.1.0 از mongodb  منتشر شده باشد و این نسخه با نسخه مورد استفاده شما در سال 2019 تفاوت هایی داشته باشد که درصورت استفاده آن در پروژه خود به طور کل پروژه شما کارایی خود را از دست میدهد و کار نمیکند در این صورت آن فرد نمیتواند از پروژه شما استفاده کند و پروژه شما عملا منقضی میشود ( با اجرای دستور npm install در cmd نسخه 4.1.0 به صورت خودکار نصب میشود و جایگزین نسخه قبلی میشود ) حال برای این مشکل راه هایی وجود دارد که به ان ها خواهیم پرداخت:1. محدود کردن پروژه به استفاده از یک ورژن:   در این حالت شما به جای نوشتن &#34;3.3.1^&#34;در بخش ورژن mongodb فقط عبارت &#34;3.3.1&#34; را مینویسید در اینصورت پروژه شما فقط از ورژن 3.3.1 پشتیبانی میکند و در صورت استفاده آن توسط فرد دیگری این ورژن نصب میشود.2. استفاده از فایل package-lock.json:    برای استفاده از این فایل شما نیازی به انجام کاری ندارید و با ایجاد فایل package.json این فایل نیز به طور خودکار ایجاد میشود. این فایل ورژن پروژه شما را قفل می کند یعنی به طور مثال اگر نسخه جدیدی از mongodb منتشر شود این نسخه در پروژه مورد استفاده قرار نمیگیرد و ورژن ثبت شده در فایل مذکور            ( package-lock.json ) در پروژه شما نصب و استفاده میشود. نمایی از پکیج mongodb در package-lock.jsonبرای به روز کردن این فایل ها میتوان به راحتی و با اجرای دستور npm update پکیج ها داخل پروژه را  به روز کرد.لازم به ذکر است برای اشنایی بیشتر با این فایل ها باید بیشتر با آن ها درگیر شد و نحوه کار و عملکرد آن ها را مورد بررسی قرار داد.برای خواندن بیشتر میتوانید به لینک زیر هم مراجعه کنیدhttps://medium.com/@dltlabs/package-json-vs-package-lock-json-c8d5deba12cb</description><category>alireza binesh</category><author>alireza binesh</author><pubDate>Sun, 12 Jan 2020 13:29:40 +0330</pubDate></item></channel></rss>