باسلام
یک سایت داریم که در آن کلیه اطلاعات ماشین آلات دیزل در کلاس Machine ساخته شده و در بانک ذخیره می شود
public class Machine
{
[Key]
public int EquipID { get; set; }
[Display(Name = "کد دستگاه")]
public string Code { get; set; } = default!;
[Display(Name = "مدل دستگاه")]
public string Model { get; set; } = default!;
[Display(Name = "نام دستگاه")]
public string Type { get; set; } = default!;
[MaxLength(30)]
[Display(Name = "سریال دستگاه")]
public string? SerialNumber { get; set; } = default!;
[MaxLength(30)]
[Display(Name = "سال ساخت")]
public DateTime Date { get; set; }
[Display(Name = "شرکت سازنده")]
public int Company { get; set; }
[MaxLength(100)]
[Display(Name = "توضیحات")]
public string? Note { get; set; } = default!;
}
اما در ابتدا کلیه پراپرتی هایی که لازم داریم مشخص نیست و جدول ماشین آلات مانند جدول زیر باید باشد
ردیف |
نام دستگاه |
کد دستگاه |
مدل دستگاه |
سریال دستگاه |
شرکت سازنده |
سال ساخت |
توضیحات |
اما به مرور که دستگاه به لیست اضافه میشود نیاز به پراپرتی های دیگری می باشد.
مثلا یک روز کامیون داریم که کامیون شامل ظرفیت بار می باشد یا اگر تانکر داشته باشد به غیر از ظرفیت وزنی بار ظرفیت حجمی هم لازم است.
اگر بیل مکانیکی باشد نیاز به حجم باکت دستگاه نیز هست.
اگر دریل حفاری باشد نیاز به قطر حفاری و حداکثر میزانی که می تواند حفاری کند می باشد. و.....
حال میخواهم کلاس Machine را طوری طراحی کنم که دارای فیلد داینامیک باشد و کاربران بتوانند در زمان اجرا در صورت نیاز یک یا چند پراپرتی را به این کلاس اضافه کنند.
و زمانی که میخواهیم لیست کلیه ماشین آلات را داشته باشیم باید بتوانیم لیستی شبیه لیست زیر را از خروجی برنامه بگیریم.
ردیف |
نام دستگاه |
کد دستگاه |
مدل دستگاه |
سریال دستگاه |
شرکت سازنده |
سال ساخت |
توضیحات |
ظرفیت |
وزن دستگاه |
ابعاد |
سریال گیربکس |
اندازه مته حفاری
|
اندازه لاستیک |
حال باید کلاس Machine را چگونه باید تعریف کنم که شامل پراپرتی (فیلد) داینامیک باشه.
در ضمن سایت با Asp.Net Core با استفاده از RazorPages نوشته شده است.
به نظر من خواسته شما قابل اجرا نیست. ببینید افزودن Property جدید به معنی افزودن فیلد جدید در دیتابیس هست و نمیشه که کاربر هر وقت خواست در دیتابیس یک فیلد زیاد کنه. چون نظم دیتابیس و ساختار اون بهم میریزه اینجوری.
شما باید لیست کاملی از دستگاه هایی که دارید رو تهیه کنید. مثلا
حالا مشخص کنید مثلا انواع کامیونت ها دارای چه مدلهایی هستند. مثلا
و برای هر کدام جدول مشخصات خاص خودشو طراحی کنید. البته اگر مشخصات این کامیونت ها بهم نزدیک هستن یا نهایتا در یک یا دو فیلد متفاوت هستند میتونید در یک جدول هم قرار بدید.
بنابراین شما بیشتر نیاز به جمع آوری اطلاعات در مورد تجهیرات خودتون دارید.
سلام و وقت بخیر
طبق گفته خانم فاطمه همچین چیزی که بتونی پراپرتی توی کلاس به صورت داینامیک اضافه کنی نیست.
ولی یه راه حل داره که اگه انجام بدی مشکلت حل میشه.
اول ازهمه یه طبقه - که یه جور دسته بندی هست برای ماشین ها-برای ماشین هات درست میکنی و ابتدا کاربر طبقات ماشین رو ثبت میکنه مثل طبقه کامیون، بیل مکانیکی، دریل و... که زمان تعریف ماشین باید مشخص بشه این ماشین جز کدوم طبقه هستش.
حالا یه فرم جدا درست میکنی که توش کاربر میتونه nتا طبقه خصوصیت تعریف کنه - طبقه خصوصیت فقط شامل ویژگی که ممکنه اون طبقه ماشین داشته باشه مثلا برای کامیون ظرفیت، حجم باک و.. - و موقع تعریف طبقه خصوصیت باید مشخص کنه این طبقه خصوصیت مربوط به کدوم طبقه ماشین هست
و درنهایت موقع تعریف ماشین چون طبقه ماشین رو اول باید کاربر انتخاب کنه با توجه به طبقه ماشین انتخاب شده خصوصیات که کاربر باید وارد کنه رو تو فرم معرفی ماشین میبینه و ثبت میکنه و ماشین در جدول ماشین ثبت میشه ولی خصوصیت هاش تو جدول دیگه باید ثبت بشه.
تاریخ :
1403/10/08
- ساعت :
12:22:00 PM
- بازدید :
18
- پاسخ :
1
|
تاریخ :
1403/10/08
- ساعت :
12:08:00 PM
- بازدید :
30
- پاسخ :
1
|
تاریخ :
1403/09/22
- ساعت :
05:58:00 PM
- بازدید :
160
- پاسخ :
0
|
تاریخ :
1399/12/12
- ساعت :
06:34:00 AM
- بازدید :
2184
- پاسخ :
1
|
تاریخ :
1403/09/06
- ساعت :
09:51:00 PM
- بازدید :
213
- پاسخ :
2
|
تاریخ :
1400/07/17
- ساعت :
10:39:00 PM
- بازدید :
2392
- پاسخ :
0
|
تاریخ :
1403/09/05
- ساعت :
06:32:00 PM
- بازدید :
133
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
194
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
225
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1150
- پاسخ :
1
|
تاریخ :
1403/10/09
- ساعت :
02:15:00 AM
- بازدید :
22
- پاسخ :
1
|
تاریخ :
1403/10/09
- ساعت :
02:06:00 AM
- بازدید :
16
- پاسخ :
1
|
تاریخ :
1403/10/08
- ساعت :
06:22:00 PM
- بازدید :
25
- پاسخ :
1
|
تاریخ :
1399/06/22
- ساعت :
08:02:00 PM
- بازدید :
3981
- پاسخ :
1
|
تاریخ :
1403/10/08
- ساعت :
12:22:00 PM
- بازدید :
18
- پاسخ :
1
|
تاریخ :
1403/10/08
- ساعت :
12:08:00 PM
- بازدید :
30
- پاسخ :
1
|
تاریخ :
1403/10/07
- ساعت :
03:12:00 PM
- بازدید :
81
- پاسخ :
2
|
تاریخ :
1403/10/06
- ساعت :
09:20:00 PM
- بازدید :
53
- پاسخ :
1
|
تاریخ :
1403/09/22
- ساعت :
05:58:00 PM
- بازدید :
160
- پاسخ :
0
|
تاریخ :
1399/12/12
- ساعت :
06:34:00 AM
- بازدید :
2184
- پاسخ :
1
|