پروژه ASP.Net Core MVC (وب و سی شارپ)
ایجاد کنترلر کامل با ویو و public class NameController : Controller { private readonly AppDbCont
بیایم با مثالهای واقعی و توضیح مرحلهبهمرحله بررسی کنیم که تفاوت بین context.Add(name) و context.Names.Add(name) دقیقاً چیه، چه زمانی استفاده میشن، و کدوم بهتره.
---
🧠 اول تعریف هر کدام
✅ 1. _context.Add(name)
- این یک متد عمومی از EF Core هست.
- شیء name رو به کل کانتکست اضافه میکنه.
- EF
خودش تشخیص میده که name مربوط به جدول Names هست.
- مناسب برای زمانی که نوع شیء مشخصه و نمیخوای مستقیم به جدول خاصی اشاره کنی.
✅ 2. _context.Names.Add(name)
- این متد مستقیماً شیء رو به جدول Names اضافه میکنه.
- یعنی به DbSet<Name> که در AppDbContext تعریف شده، اشاره مستقیم داری.
- واضحتره و کنترل بیشتری بهت میده.
---
🔍 مثال واقعی از تعریف DbContext
csharp
public class AppDbContext : DbContext
{
public DbSet<Name> Names { get; set; }
}
در اینجا Names یک جدول (یا مجموعه) از نوع Name هست.
---
🎯 مقایسه عملی
| ویژگی | context.Add(name) | context.Names.Add(name) |
|-------|-----------------------|-----------------------------|
| نوع | عمومی | مستقیم به جدول |
| خوانایی | کمتر | بیشتر |
| کنترل | کمتر | بیشتر |
| مناسب برای | پروژههای ساده یا سریع | پروژههای بزرگ یا دقیق |
| تشخیص جدول | خودکار توسط EF | مشخص توسط برنامهنویس |
---
✅ کدام بهتر است؟
- در پروژههای کوچک یا زمانی که فقط یک جدول داری، هر دو روش درست و قابل استفاده هستن.
- اما در پروژههای بزرگ یا زمانی که چندین جدول داری، استفاده از
csharp _context.Names.Add(name);بهتر و حرفهایتره چون: - خوانایی کد بیشتره - احتمال اشتباه کمتره - دیباگ راحتتره --- 🧠 نکته پیشرفته اگر از _context.Add(...) استفاده کنی برای شیءهایی که EF نمیتونه نوعشون رو تشخیص بده (مثلاً شیء پیچیده یا اشتباه)، ممکنه خطا بگیری یا داده درست ذخیره نشه.
DateRecord.zip
حجم:
24.7M
پروژه کوچک برای نمایش تاریخ شمسی و میلادی
1.5M حجم رسانه بالاست
مشاهده در ایتا
این پروژه که ساختم نوع تاریخ ربطی به سیستم کامپیوتر ندارد
داتنت ۱۰، ویژوال استودیو ۲۰۲۶ و سیشارپ ۱۴ با تمرکز بر هوش مصنوعی، عملکرد بالا و قابلیتهای مدرن عرضه شدهاند. این نسخهها جهشی بزرگ در تجربه توسعهدهندگان ایجاد کردهاند.
در ادامه، مهمترین ویژگیهای هر کدام را مرور میکنیم:
---
🚀 داتنت ۱۰ (.NET 10)
- نسخه LTS (پشتیبانی بلندمدت) تا نوامبر 2028.
- ادغام عمیق با هوش مصنوعی برای توسعه اپلیکیشنهای هوشمند.
- پشتیبانی از زبانهای C# 14 و F# 10 با قابلیتهای جدید.
- بهبود عملکرد و امنیت کوانتومی برای اپهای حساس و توزیعشده.
- پیشرفت در ASP.NET Core، .NET MAUI و EF Core برای توسعه وب، موبایل و دیتابیس.
---
🧠 ویژوال استودیو ۲۰۲۶ (Visual Studio 2026)
- بازطراحی رابط کاربری با Fluent UI و اضافه شدن 11 تم رنگی جدید.
- ادغام کامل GitHub Copilot بهعنوان دستیار هوشمند کدنویسی.
- کاهش بیش از 50٪ توقفهای رابط کاربری برای تجربه روانتر.
- بیش از 300 قابلیت جدید و رفع 5000 باگ در نسخه نهایی.
- افزایش سرعت و مدرنسازی محیط توسعه با تمرکز بر بهرهوری.
---
🧩 سیشارپ ۱۴ (C# 14)
- انتسابهای ترکیبی سفارشی (User-Defined Compound Assignments):
- امکان پیادهسازی بهینهتر عملگرهایی مثل += یا *=.
- کاهش ساخت اشیاء غیرضروری در حافظه.
- اعضای اکستنشن (Extension Members):
- افزودن مستقیم ویژگیها (Property)، اندیسگذارها (Indexer) و متدها به انواع موجود.
- ساختار تمیزتر و قابل نگهداریتر نسبت به متدهای اکستنشن کلاسیک.
از این به بعد پروژه ها با دات نت ۸ و ۱۰ نوشته میشود پروژه های کوچک و مقدماتی با دو نسخه نوشته می شود و در پروژه متوسط و پیشرفته با دات نت ۱۰ نوشته می شود
PriceProject.zip
حجم:
23.6M
من فکرم را کردم و دیدم چون هنوز دات نت 8 پشتیبانی می شود من پروژه ساده قیمت و مجموع و میانگین را با ویژوال اتودیو 2026 و دات نت 8 نوشتم
RandomItems.zip
حجم:
23.6M
پروژه تولید اعداد تصادف و ذخیره در دیتابیس دات نت 8
پروژه ASP.Net Core MVC (وب و سی شارپ)
پروژه تولید اعداد تصادف و ذخیره در دیتابیس دات نت 8
تا اینجا کدی که نوشتی فقط کاراکترهای منفرد رو از رشتهی
charsانتخاب میکنه. یعنی خروجی همیشه ترکیبی از حروف یا اعداد جداگانه است. اگر بخوای به جای کاراکتر، کلمات کامل به صورت تصادفی انتخاب بشن، باید منبع دادهات (
chars) رو تغییر بدی و به جای یک رشته، یک لیست یا آرایه از کلمات تعریف کنی. --- ## 🔹 نمونه کد برای انتخاب کلمات تصادفی
// مجموعهای از کلمات
string[] words = { "سلام", "علیرضا", "محمد", "طاهـا", "پروژه", "کد" };
// تعداد کلمات تصادفی که میخوای بسازی
int length = 5;
// انتخاب تصادفی کلمات
string result = string.Join(" ",
Enumerable.Range(0, length)
.Select(_ => words[_rnd.Next(words.Length)])
);
---
## 🔹 توضیح خط به خط
- string[] words →
آرایهای از کلمات تعریف میکنیم.
- Enumerable.Range(0, length) →
تعداد دفعات انتخاب (مثلاً ۵ بار).
- Select(_ => words[_rnd.Next(words.Length)]) →
هر بار یک کلمهی تصادفی از آرایه انتخاب میکنه.
- string.Join(" ", ...) →
همهی کلمات انتخابشده رو با فاصله به هم وصل میکنه و یک رشتهی کامل میسازه.
---
## 🎯 خروجی نمونه
اگر آرایهی بالا باشه، خروجی میتونه چیزی مثل این باشه:
"محمد پروژه سلام علیرضا کد"یا
"سلام طاهـا علیرضا پروژه محمد"--- ## 🔹 فرق با حالت کاراکتر - در حالت قبلی: خروجی مثل
"سملاب"(ترکیب کاراکترها). - در حالت جدید: خروجی مثل
"سلام علیرضا پروژه"(ترکیب کلمات کامل).
پروژه ASP.Net Core MVC (وب و سی شارپ)
پروژه تولید اعداد تصادف و ذخیره در دیتابیس دات نت 8
کد کامل پایه
csharp
string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random _rnd = new Random();
int length = 6;
string result = new string(
Enumerable.Range(0, length)
.Select( => chars[rnd.Next(chars.Length)])
.ToArray()
);
---
بخشهای مقدماتی
مجموعه کاراکترها
csharp string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";- این رشته منبع انتخاب کاراکترهاست: حروف بزرگ انگلیسی + اعداد 0 تا 9. - هر بار یک کاراکتر از همین مجموعه انتخاب میکنیم، نه عدد و نه ایندکس؛ خودِ کاراکتر. مثال: - اگر chars = "ABC123" باشد، خروجی فقط از کاراکترهای A, B, C, 1, 2, 3 ساخته میشود. تولیدکننده تصادفی
csharp Random _rnd = new Random();- برای تولید ایندکس تصادفی و انتخاب «کاراکتر» از chars استفاده میشود. - هر فراخوانی Next(max) یک عدد تصادفی بین 0 و max-1 میدهد تا با آن یک کاراکتر از chars برداریم. مثال: - _rnd.Next(chars.Length) اگر 2 بدهد و chars = "ABC123" باشد، کاراکتر سوم یعنی C انتخاب میشود. طول رشته خروجی
csharp int length = 6;- مشخص میکند چند «کاراکتر» در خروجی داشته باشیم. - اگر length = 6 باشد، رشته خروجی دقیقاً 6 کاراکتر خواهد داشت. مثال: - length = 4 خروجیهایی مثل "A9B2" تولید میکند. --- ساخت رشته مرحلهبهمرحله شمارنده تکرار با Range
csharp Enumerable.Range(0, length)- یک دنباله از «ایندکسهای تکرار» میسازد: از 0 تا length-1. - هدفش فقط تعیین تعداد دفعات انتخاب کاراکتر است؛ خودش کاراکتر تولید نمیکند. مثال: - Enumerable.Range(0, 3) خروجی: [0, 1, 2]. انتخاب کاراکتر تصادفی با Select
csharp .Select( => chars[rnd.Next(chars.Length)])- برای «هر تکرار»، یک کاراکتر تصادفی از chars انتخاب میکنیم. - عبارت chars[_rnd.Next(chars.Length)] یعنی: - یک ایندکس تصادفی معتبر تولید کن، - سپس «کاراکتر» متناظر از chars را بردار. مثال: - اگر chars = "ABC123" و طولش 6 باشد: - بار اول Next(6) ممکن است 2 بدهد → کاراکتر C. - بار دوم ممکن است 5 بدهد → کاراکتر 3. - خروجی Select چیزی مثل: ['C', 'A', '3', 'B', '1', 'C']. تبدیل به آرایه و رشته
csharp .ToArray()- دنباله کاراکترها را به char[] تبدیل میکند؛ برای ساخت رشته لازم است.
csharp new string(charArray)- آرایه کاراکترها را به یک رشته نهایی تبدیل میکند؛ مثلاً "CA3B1C". --- نکته مهم درباره نام پارامتر در Select چرا از _ استفاده میکنیم؟ - وقتی مقدار داخل Select استفاده نمیشود (فقط نقش «تکرار» دارد)، نامگذاری با _ قراردادی است و خوانایی را بالا میبرد: یعنی «این ورودی مهم نیست». - اگر میخواهی واضحتر باشد، میتوانی از i استفاده کنی. دو نسخه معادل:
csharp // نسخه با _ Enumerable.Range(0, length) .Select( => chars[rnd.Next(chars.Length)]) // نسخه با i (خوانایی برای مبتدیها) Enumerable.Range(0, length) .Select(i => chars[_rnd.Next(chars.Length)])در هر دو، «i» یا «_» خودش استفاده نمیشود؛ فقط تعداد دفعات Select را تعیین میکند. --- مثالهای تکمیلی برای درک Range و Select مثال ۱: لیست اعداد پشتسرهم
csharp var numbers = Enumerable.Range(0, 5).ToList(); // خروجی: [0, 1, 2, 3, 4]- فقط نشان میدهد Range چطور «تعداد» میسازد. مثال ۲: ساخت برچسبهای نمایشی
csharp var labels = Enumerable.Range(0, 10) .Select(i => $"آیتم شماره {i}") .ToList(); // خروجی: ["آیتم شماره 0", ..., "آیتم شماره 9"]- ترکیب Range با Select برای تبدیل ایندکسها به «رشتههای معنیدار». --- جمعبندی اجرایی - منبع کاراکترها را با chars تعریف میکنی. - با Random ایندکس تصادفی میسازی تا «کاراکتر» برداری. - length فقط تعداد کاراکترهای خروجی را مشخص میکند. - Enumerable.Range(0, length) تعداد تکرار را فراهم میکند. - Select در هر تکرار یک کاراکتر تصادفی از chars برمیدارد. - خروجی کاراکترها با ToArray جمع میشود و با new string(...) تبدیل به رشته نهایی میگردد. اگر بخواهی منتشر کنی، میتوانیم همین متن را کمی کوتاه کنیم و در کنارش یک تابع تمیز ارائه بدهیم تا مخاطب بتواند مستقیم استفاده کند:
csharp
public static string GenerateRandomString(int length, string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", Random rnd = null)
{
rnd ??= new Random();
return new string(
Enumerable.Range(0, length)
.Select(_ => chars[rnd.Next(chars.Length)])
.ToArray()
);
}
پروژه ASP.Net Core MVC (وب و سی شارپ)
کد کامل پایه csharp string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; Random _rnd = new Random
زمان:
حجم:
4.3M
تولید اعداد تصادفی
string result = new string(
Enumerable.Range(0, length)
.Select( _=> chars[_rnd.Next(chars.Length)])
.ToArray()
ساخته شده از هوش مصنوعی