MaxLength Attribute – محدود کردن طول داده

آشنایی با اتریبیوت MaxLength در روش Code First

آشنایی با اتریبیوت MaxLength در EF Core
maxlength attribute in asp.net core

اتریبیوت MaxLength در EF Core چه کاربردی دارد؟ چگونه می‌توانیم طول داده های مندرج در یک جدول را در روش کدفرست (CodeFirst) محدود کنیم تا از یک حدی که خودمات تعیین کرده ایم بیشتر نباشد؟

سلام ، آرزو ابراهیمی هستم برنامه نویس NET. و با یک مقاله آموزشی دیگر از فصل  اموزش Entity Framework core از دوره اموزش asp.net core 3 در خدمت شما همراهان همیشگی میزفا هستم.

محدود کردن طول Property ها در روش Code First در EF Core

برای محدود کردن طول داده ها در روش CodeFirst می‌توانیم از دو روش استفاده کنیم که در ادامه این مقاله آموزشی با این دو روش آشنا خواهید شد.

محدود کردن طول داده های جدول به روش Data Annotation Attributes

در این روش جهت محدود کردن طول داده‌ی یک ستون از جدول از اتریبیوت [MaxLength()] بالای سر آن پراپرتی که می‌خواهیم طولش محدود شود ، استفاده می‌کنیم.

حالا به سراغ پروژه جلسه آموزشی گذشته میرویم این پروژه را باز کنید اگر یادتان باشد در جلسه آموزشی گذشته با اتریبیوت Required  جهت اجباری کردن یک ستون از جدول آشنا شدیم و حالا می‌خواهیم با استفاده از اتریبیوت MaxLength طول پراپرتی Name و Family را محدود کنیم.

پس بالای سر پراپرتی Name و Family از اتریبیوت MaxLength استفاده می‌کنم و چون نمیخواهم که طول کاراکترهای این دوتا پراپرتی از 50 کاراکتر بیشتر باشد عدد 50 را به اتریبیوت MaxLength ارسال میکنم، مطابق با کد زیر :

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Threading.Tasks;

namespace EFCore_C05.Models
{
    [Table("StudentMaster")]
    public class Student
    {
        [Key]
        public string StudentId { get; set; }

        [Required]
        public string NationalCode { get; set; }

        [Column("FirstName")]
        [MaxLength(50)]
        public string Name { get; set; }

        [Column("LastName"),MaxLength(50)]
        public string Family { get; set; }
        public DateTime BirthDate { get; set; }
    }
}

[box type=”info” align=”” class=”” width=””]

نکته : از چندین اتریبیوت می تونید در یک سطر استفاده کنید مثلا به این صورت  [Column(“LastName”),MaxLength(50)] فقط باید اتریبیوت ها با علامت , از هم جدا شوند.

[/box]

حالا فقط باید دیتابیس را آپدیت کنیم بعد از آپدیت دیتابیس ، طول پراپرتی Name و Family به حداکثر 50 کاراکتر محدود خواهد شد.
چنانچه با نحوه آپدیت دیتابیس در asp.net core آشنایی ندارید پیشنهاد میکنم مقاله آموزش  آپدیت دیتابیس در EF Core را حتما مطالعه نمایید.

محدود کردن طول داده های جدول به روش Fluent API

با استفاده از روش Fluent API که در مقاله آموزشی پیکربندی کلاس های Domain در Code First با آن آشنا شدید هم می‌توانید طول داده ها را در روش CodeFirst محدود کنید.

ابتدا باید متد OnModelCreating را در کلاس Override ، StudentDBContext کنید سپس داخل این متد از کدهای زیر استفاده نمایید.

builder.Entity<Student>().Property(b => b.Name).HasColumnName("FirstName").HasMaxLength(50);
builder.Entity<Student>().Property(b => b.Family).HasColumnName("LastName").HasMaxLength(50);

در کد بالا جهت محدود کردن طول پراپرتی های Name و Family  از متد HasMaxLength() استفاده کرده و عدد ۵۰ را به این متد ارسال کرده ایم چون نمیخواهیم که طول این دوتا Property از 50 تا بیشتر باشد.

پس متد OnModelCreating پس از تغییر به صورت زیر خواهد شد.

protected override void OnModelCreating(ModelBuilder builder)
{
   base.OnModelCreating(builder);
   builder.Entity<Student>().ToTable("StudentMaster").HasKey(b => b.StudentId);
   builder.Entity<Student>().Property(b => b.Name).HasColumnName("FirstName").HasMaxLength(50);
   builder.Entity<Student>().Property(b => b.Family).HasColumnName("LastName").HasMaxLength(50);
   builder.Entity<Student>().Property(b => b.NationalCode).IsRequired();
}

از اینکه دوره آموزش asp.net core را دنبال می‌کنید، سپاسگزارم و امیدوارم براتون مفید بوده باشه. اگر سوال پیشنهاد و انتقادی داشتید خوشحال میشم که باهام در میان بگذارید و حتما در اولین فرصت بهتون پاسخ میدم.?

فیلم آموزشی asp.net core 2

آرزو ابراهیمی
بیش از 6 سال است که زمینه طراحی و توسعه سایت فعالیت می‌کنم، طراح و برنامه نویس انواع سامانه‌های تخصصی پزشکی، مناقصات، فروشگاهی و … بودم و هستم و هدفم در سایت میزفا ارائه اطلاعات بروز و ناب در زمینه طراحی سایت است. تا از این طریق بتونم تجربیات و دانسته های خودم را با تمامی علاقمندان به مباحث طراحی سایت به اشتراک بزارم .

فیلم آموزشی asp.net core 2

3 نظر

3 پاسخ

  1. سلام،اگر مقدار خاصیت MaxLength کنترل text Box،صفر در نظر گرفته
    شده باشد، طول رشته کنترل Text Box چقدر خواهد شد؟

  2. سلام ممنون از مقاله خوبتون بین دو روش که توضیح دادید تفاوتی وجود داره؟

    1. سلام وقتتون بخیر … ممنونم خوش حالم براتون مفید بوده.
      خیر تفاوتی وجود ندارد و هر دو ما رو به یک هدف مشترک می رسونه.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

حداکثر حجم فایل برای آپلود: 1 مگابایت. فایل‌های مجاز برای آپلود: عکس, ویس, ویدیو, ورد یا پی دی اف, فایل متنی, زیپ. شما می‌تونید برای بهتر پرسیدن سوالتون، عکس یا ویس یا حتی فیلم در بخش نظرات میزفا آپلود کنید. برای ضبط ویس می‌تونید از خود واتس آپ استفاده کنید و بعد اینجا آپلود کنید و برای ارسال عکس هم کافی هست اسکرین شات بگیرید. Drop file here

با موفقیت ثبت شد، میزفا از شما برای عضویت در خبرنامه هفتگی تشکر میکند.

عضویت در خبرنامه هفتگی برای دریافت:

  • فیلم و مقاله رایگان سئو
  • آموزش‌های UX ، GA و GTM
  • مقاله های تخصصی ASP.NET Core
  • اطلاع رسانی از محصولات
فیلم آموزشی asp.net core 2
ترک میزفا خوب نیست!
معرفی جامع‌ترین ابزار سئو در ایران
بالای ۱۰ هزار عضو
PHZpZGVvIHdpZHRoPSI2MDAiIGhlaWdodD0iMzUwIiBwb3N0ZXI9Imh0dHBzOi8vbWl6ZmEuY29tL2Jsb2cvd3AtY29udGVudC91cGxvYWRzLzIwMjMvMDUvcG9zdGVyLW1pemZhLXRvb2xzLXZpZGVvLW1pbi5wbmciIGNvbnRyb2xzIHByZWxvYWQ9Im5vbmUiPiANCiAgIDxzb3VyY2Ugc3JjPSJodHRwczovL21pemZhLmNvbS9ibG9nL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIzLzA1L21pemZhX3Rvb2xzXzcyMHAubXA0IiB0eXBlPSJ2aWRlby9tcDQiPg0KPC92aWRlbz4=