ایجاد کلاس و لیستی از کلاس و درج داده های تستی EF Core

ایجاد داده های معتبر برای لیست دلخواه در EF Core

توسط admin | گروه برنامه نویسی BLAZOR | 1402/01/12

نظرات 1

 Faker یک کتابخانه open-source برای زبان برنامه نویسی C# است که برای تولید داده های تستی به منظور تست و پردازش داده ها استفاده می شود. این کتابخانه مجموعه ای از توابع و کلاس ها را فراهم می کند که به شما اجازه می دهد داده های جعلی مانند نام، آدرس، شماره تلفن، آدرس ایمیل، محل کار و غیره تولید کنید. با استفاده از کتابخانه‌ی Faker می‌توانید داده‌های واقعی‌ تری برای لیست های متنوع ایجاد کنید. در این کد مثال ، از دستورات Faker برای ایجاد داده‌های تصادفی استفاده شده است. بنابراین، خطوط کدی که با استفاده از کتابخانه Faker نوشته می شوند، به شما این امکان را می دهند که به سادگی داده های جعلی تولید کنید و از آن ها برای تست برنامه ها، پردازش داده ها و سایر کاربردها استفاده کنید. 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
public class Product
    {
        public int Id { get; set; }

        [Display(Name = "نام محصول")]
        [Required(ErrorMessage = "نام محصول الزامی است")]
        public string Name { get; set; }

        [Display(Name = "برند")]
        [Required(ErrorMessage = "برند الزامی است")]
        public string Brand { get; set; }

        [Display(Name = "قیمت")]
        [Required(ErrorMessage = "قیمت الزامی است")]
        [Range(0, double.MaxValue, ErrorMessage = "قیمت باید بیشتر از صفر باشد")]
        public decimal Price { get; set; }

        [Display(Name = "توضیحات")]
        public string Description { get; set; }

        [Display(Name = "ویژگی ها")]
        public string Features { get; set; }

        [Display(Name = "ابعاد")]
        public string Dimensions { get; set; }

        [Display(Name = "وزن")]
        [Range(0, double.MaxValue, ErrorMessage = "وزن باید بیشتر از صفر باشد")]
        public decimal Weight { get; set; }

        [Display(Name = "تصاویر")]
        public string Images { get; set; }

        [Display(Name = "موجودی")]
        [Required(ErrorMessage = "موجودی الزامی است")]
        [Range(0, int.MaxValue, ErrorMessage = "موجودی باید بیشتر از صفر باشد")]
        public int Inventory { get; set; }

        [Display(Name = "کشور سازنده")]
        public string CountryOfOrigin { get; set; }

        [Display(Name = "واحد فروش")]
        public string UnitOfSale { get; set; }

        [Display(Name = "تاریخ انقضا")]
        public DateTime? ExpirationDate { get; set; }

        [Display(Name = "شرایط بازگشت")]
        public string ReturnPolicy { get; set; }

        [Display(Name = "نحوه ارسال")]
        public string ShippingMethod { get; set; }

        [Display(Name = "توضیحات فنی")]
        public string TechnicalSpecifications { get; set; }

        [Display(Name = "امتیاز مشتری")]
        [Range(0, 5, ErrorMessage = "امتیاز باید بین صفر و پنج باشد")]
        public decimal CustomerRating { get; set; }

        [Display(Name = "تعداد بازدید")]
        [Range(0, int.MaxValue, ErrorMessage = "تعداد بازدید باید بیشتر از صفر بازدید می‌باشد.")]
        public int ViewCount { get; set; }
        [Display(Name = "شناسه گروه کالا")]
        public int CategoryId { get; set; }

        [Display(Name = "گروه کالا")]
        public virtual Category CategoryNavigation { get; set; }
    }

    public class Category
    {
        public int Id { get; set; }
        [Display(Name = "نام دسته بندی")]
        public string Name { get; set; }

        [Display(Name = "توضیحات")]
        public string Description { get; set; }

        [Display(Name = "کالاهای مرتبط")]
        public virtual ICollection<Product> Products { get; set; }

    } 

این دو کلاس برای نمایش محصولات و دسته بندی های آن ها در یک فروشگاه آنلاین مورد استفاده قرار می گیرند. کلاس Product ویژگی های محصول را اعم از نام، برند، دسته بندی، قیمت، توضیحات، ویژگی ها، ابعاد، وزن، تصاویر، موجودی، کشور سازنده، واحد فروش، تاریخ انقضا، شرایط بازگشت، نحوه ارسال، توضیحات فنی، امتیاز مشتری و تعداد بازدید را شامل می شود. همچنین شامل یک شی CategoryNavigation است که با استفاده از آن، می توان به دسته بندی مرتبط با محصول دسترسی داشت. کلاس Category شامل ویژگی های دسته بندی شامل نام، توضیحات و کالاهای مرتبط است که با استفاده از آن می توان به محصولات مرتبط با هر دسته بندی دسترسی داشت. 

در ذیل کد ایجاد لیستی از کلاس و ایجاد داده های تستی با کتابخانه Faker ارائه گردیده است. لازم به ذکر است که این نسخه از Faker که امکانات بیشتری دارد در ویژوال استدیوی 2019 و با تکنولوژی Blzor تست شده است.

 

  
@page "/P1"
@using FakerDotNet



@if (products != null)
{
<table class="table table-striped table-bordered table-hover" itemscope="@products">
    <thead class="thead-light">
    <th>نام محصول</th>
    <th>برند</th>
    <th>قیمت</th>
    <th>توضیحات</th>
    <th>ویژگی ها</th>
    <th>ابعاد</th>
    <th>وزن</th>
    <th>تصاویر</th>
    <th>موجودی</th>
    <th>کشور سازنده</th>
    <th>واحد فروش</th>
    <th>تاریخ انقضا</th>
    <th>شرایط بازگشت</th>
    <th>نحوه ارسال</th>
    <th>توضیحات فنی</th>
    <th>امتیاز مشتری</th>
    <th>تعداد بازدید</th>
    <th>شناسه گروه کالا</th>
    </thead>
    @foreach (var context in products)
    {
        <tbody>
        <td>@context.Name</td>
        <td>@context.Brand</td>
        <td>@context.Price</td>
        <td>@context.Description</td>
        <td>@context.Features</td>
        <td>@context.Dimensions</td>
        <td>@context.Weight</td>
        <td>@context.Images</td>
        <td>@context.Inventory</td>
        <td>@context.CountryOfOrigin</td>
        <td>@context.UnitOfSale</td>
        <td>@context.ExpirationDate</td>
        <td>@context.ReturnPolicy</td>
        <td>@context.ShippingMethod</td>
        <td>@context.TechnicalSpecifications</td>
        <td>@context.CustomerRating</td>
        <td>@context.ViewCount</td>
        <td>@context.CategoryId</td>
        </tbody>
    }
</table>
}


@code {

    public List<Data.Product> products = new List<Data.Product>();

    protected override void OnInitialized()
    {
        MakeData();
    }

    public void MakeData()
    {
        // ایجاد دسته بندی ها
        var categories = new List<Data.Category>
{
    new Data.Category {Id = 1, Name = "لپ تاپ", Description = "لپ تاپ های مختلف" },
    new Data.Category {Id = 2, Name = "تبلت", Description = "تبلت های مختلف" },
    new Data.Category {Id = 3, Name = "موبایل", Description = "موبایل های مختلف" },
    new Data.Category {Id = 3, Name = "کجت", Description = "گجت های مختلف" },
};


        for (int i = 0; i < 200; i++)
        {
            //var Faker = new Faker();
            var product = new Data.Product
            {
                Name = Faker.Commerce.ProductName(),
                Brand = Faker.Company.Name(),
                Price = (decimal)Faker.Random.Element(new[] { 1, 2, 3, 4, 5 }),
                Description = Faker.Commerce.PromotionCode(),
                Features = Faker.Commerce.Department(),
                Dimensions = $"{Faker.Random.Element(new[] { 1, 2, 3, 4, 5 }) } x {Faker.Random.Element(new[] { 1, 2, 3, 4, 5 }) } x {Faker.Random.Element(new[] { 1, 2, 3, 4, 5 }) } cm",
                Weight = (decimal)Faker.Random.Element(new[] { 1, 2, 3, 4, 5 }),
                Images = Faker.Internet.Url(),
                Inventory = Faker.Random.Element(new[] { 1, 2, 3, 4, 5 }),
                CountryOfOrigin = Faker.Address.Country(),
                UnitOfSale = Faker.Commerce.Department(),
                ExpirationDate = Faker.Date.Forward(365),
                ReturnPolicy = Faker.Commerce.Material(),
                ShippingMethod = Faker.Company.Bs(),
                TechnicalSpecifications = Faker.Commerce.Material(),
                CustomerRating = (decimal)Faker.Random.Element(new[] { 1, 2, 3, 4, 5 }),
                ViewCount = Faker.Random.Element(new[] { 1, 2, 3, 4, 5 }),
                CategoryId = GetRndNum()
            };

            products.Add(product);
        }
    }

    private int GetRndNum()
    {
        Random rnd = new Random();
        int randomNumber = rnd.Next(1, 5);

        switch (randomNumber)
        {
            case 1:
                return 1;
            case 2:
                return 2;
            case 3:
                return 3;
            case 4:
                return 4;
            default:
                throw new Exception("Invalid random number generated.");
        }
    }

}
 
خروجی:
ایجاد Entity و کلاس و لیستی از کلاس
 

 

1 نظر

ارسال شده توسط حمیرا چمشیدی
1402/01/12

با سلام و احترام با اینکه این تشکر ممکن است خیلی کوتاه به نظر برسد، اما می‌خواهم به شما از تلاش هایتان و ارائه خدمات عالی در وب سایتتان تشکر کنم. همیشه با آسایش و راحتی بیشتری به اینجا باز می‌گردم و بسیار خوشحالم که به یک منبع قابل اعتماد و مفید دسترسی دارم.

نظر محترم شما در مورد مقاله های وب سایت برنامه نویسی و پایگاه داده

نظرات محترم شما در خدمات رسانی بهتر ما را یاری می نمایند. لطفا اگر مایل بودید یک نظر ما را مهمان فرمائید. آدرس ایمیل و وب سایت شما نمایش داده نخواهد شد.

حرف 500 حداکثر