Table Attribute – تغییر نام جدول

آشنایی با Table Attribute در روش CodeFirst

تغییر نام جدول در روش کدفرست
rename table in code first in EF Core

چگونه میتوانیم نام یک Table را در Database در روش کدفرست تغییر بدم ؟ برای تغییر نام Table ها در روش Code First چه روش های موجود دارد و بهتر است از چه روشی استفاده کنم ؟ اتریبیوت Table در EF Core چه کاربردی دارد؟

سلام دوستان ، آرزو ابراهیمی هستم توسعه دهنده وب ، با یک مقاله آموزشی دیگر از مجموعه مقالات اموزش mvc core سایت میزفا در خدمت شما عزیزان هستم .
پیشنهاد میکنم قبل از شروع مطالعه‌ی این مقاله آموزشی ، مقاله جلسه آموزشی ایجاد Database و جداول آن به روش   CodeFirst را مطالعه و بررسی کنید چون می‌خواهم از پروژه جلسه گذشته در این جلسه آموزشی استفاده کنم.

تغییر نام جداول دیتابیس SQL Server سه روش در EF Core

جهت تغییر نام جدول در دیتابیس اسکیوال سرور می‌توانیم از سه روش استفاده کنیم که در ادامه‌ی این مقاله آموزشی این سه روش را به صورت عملی باهم بررسی خواهیم کرد پس همراه با این مقاله باشید.

تغییر نام Table از طریق تغییر نام Property از نوع کلاس DbSet

این روش خیلی ساده است ، اگر یادتون باشه در جلسه آموزشی گذشته در کلاس Context پروژه (StudentDBContext) یک Property از نوع کلاس DbSet تعریف کردیم به نام Students .
چون نام این پراپرتی از نوع کلاس DbSet را Students قرار دادیم طبق نام این پراپرتی یک جدول برایمان در دیتابیس همنام این پراپرتی (Students) ایجاد می‌شود.

حالا اگر که می‌خواهید نام جدول خود را به StudentMaster یا هر نام دلخواهی تغییر دهید کافیه نام این پراپرتی را تغییر دهید. پس به سراغ کلاس StudentDBContext می‌روم و نام پراپرتی را به StudentMaster تغییر می‌دهم.

 public class StudentDBContext : DbContext
{
    public StudentDBContext(DbContextOptions options) : base(options)
    {

    }
    public virtual DbSet StudentMaster { set; get; }
}

حالا باید دیتابیس را آپدیت کنیم جهت آپدیت Database پیشنهاد می‌کنم جلسه آموزشی بروزرسانی دیتابیس در Code First را مطالعه نمایید.

تغییر نام Table به روش Data Annotation Attributes

برای تغییر نام جدول در این روش از اتربیوت [Table()] بالای سر Domain Class مربوط به موجودیت دانشجو استفاده می‌کنیم ، بعد از اضافه نمودن اتریبیوت Table برای اینکه پروژه دچار خطا نشود باید using System.ComponentModel.DataAnnotations.Schema; را به قسمت using های کلاس Student اضافه کنید.

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

namespace EFCore_C05.Models
{
    [Table("StudentMaster")]
    public class Student
    {
        public string StudentId { get; set; }
        public string NationalCode { get; set; }
        public string Name { get; set; }
        public string Family { get; set; }
        public DateTime BirthDate { get; set; }
    }
}

خب همانطور که در کد بالا مشاهده می‌کنید چون من می‌خواهم نام جدول موجودیت Student به StudentMaster تغییر دهم ، من این نام جدید جدول را به اتریبیوت Table ارسال میکنم به صورت روبه رو [Table("StudentMaster")]حالا کافی هست که دیتابیس را آپدیت کنید تا تغییر اعمال شود.

تغییر نام Table دیتابیس به روش Fluent API

با استفاده از روش Fluent API که در مقاله آموزشی روش های پیکربندی کلاس های Entity در Code First با آن آشنا شدید هم می‌توانید نام جدول را تغییر دهید.

ابتدا باید متد OnModelCreating را در کلاس Override ، StudentDBContext کنید طبق کد زیر

using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace EFCore_C05.Models
{
     public class StudentDBContext : DbContext
     {
          public StudentDBContext(DbContextOptions options) : base(options)
          {
          }

          protected override void OnModelCreating(ModelBuilder builder)
          {
              base.OnModelCreating(builder);
              builder.Entity<Student>().ToTable("StudentMaster");
          }
          public virtual DbSet<Student> Students { set; get; }
     }
}

سپس باید یک نمونه از کلاس ModelBuilder را به متد OnModelCreating کلاس والد (DbContext) ارسال کنید به صورت رو به رو base.OnModelCreating(builder); که در کد بالا هم اینکار را انجام دادیم.

حالا برای تغییر نام جدول از متد Entity() استفاده می‌کنیم سپس از متد ToTable() و بعد نام جدیدی که می‌خواهیم به جدول اعمال شود را به متد ToTable پاس میدهیم به صورت روبه رو builder.Entity().ToTable("StudentMaster");

نکته : همین طور که در کد بالا مشاهده می‌کنید در روش Fluent API از یکسری متدها به صورت زنجیره ای و پشت سرهم می‌کنیم.

بسیار خب دوستان ، این مقاله آموزشی از مقالات اموزش asp.net با #C هم به پایان رسید امیدوارم که از این مقاله آموزشی  هم رضایت داشته باشید سوالی ، انتقادی ، پیشنهادی دارید در قسمت نظرات حتما مطرح کنید.

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

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

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

بدون نظر

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

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

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

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

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

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