پیکربندی رابطه های One-to-One در EF Core با استفاده از Fluent API #1

پیکربندی رابطه های One-to-One در EF Core با استفاده از Fluent API #1

در این پست از وبسایت پرووید در رابطه با پیکربندی رابطه های One-to-One در EF Core با استفاده از Fluent API #1 صحبت خواهیم کرد. تکنولوژی Entity Framework Core نسل بعدی Entity Framework است که توسط مایکروسافت معرفی شده است.

در این قسمت از این آموزش از وبسایت پرووید قصد داریم در رابطه با انجام پیکر بندی ها در relationship های one-to-one با استفاده از Fluent API در Entity Framework Core صحبت کنیم.

بسته ی آموزش ویدئویی شروع به کار با Entity Framework Core 2.0

از شما دعوت می کنیم که از بسته ی آموزش ویدئویی شروع به کار با Entity Framework Core 2.0 دیدن کنید.

در برخی از آموزش های قبلی در رابطه با convention هایی که به طور پیش فرض در Entity Framework Core وجود دارند و relationship های one-to-one را برای ما پیاده سازی می ‌کنند صحبت کردیم. اما گاهی اوقات ممکن است بخواهید این convention ها را override کنیم. مثلاً زمانی که foreign key property ها و یا key property از این convention ها تبعیت نمی ‌کنند. خوشبختانه می توانید به سادگی با استفاده از data annotation attribute ها و یا Fluent API پیکربندی های مربوط به relationship های one-to-one را بین دو entity انجام دهید.

بیاید کار را با یک مثال آغاز کنیم. در این مثال میخواهیم یک relationship از نوع one-to-one را بین entity های Student و StudentAddress پیاده سازی کنیم. کد مربوط به این دو entity در قسمت زیر آمده است.

public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }
       
    public StudentAddress Address { get; set; }
}

public class StudentAddress
{
    public int StudentAddressId { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string Country { get; set; }

    public int AddressOfStudentId { get; set; }
    public Student Student { get; set; }
}

دقت کنید که این دو entity از convention های مربوط به foreign key property ها تبعیت نمی ‌کنند.

بسته ی آموزش ویدئویی معماری نرم افزار در Entity Framework Core

از شما دعوت می کنیم که از بسته ی آموزش ویدئویی معماری نرم افزار در Entity Framework Core دیدن کنید.

به منظور پیکربندی relationship های one-to-one با استفاده از Fluent API در Entity Framework Core از متد های HasOne و WithOne و HasForeignKey استفاده می‌کنیم. این موضوع در کد زیر نشان داده شده است.

public class SchoolContext : DbContext
{
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer("Server=.\\SQLEXPRESS;Database=EFCore-SchoolDB;Trusted_Connection=True");
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Student>()
            .HasOne<StudentAddress>(s => s.Address)
            .WithOne(ad => ad.Student)
            .HasForeignKey<StudentAddress>(ad => ad.AddressOfStudentId);
    }

    public DbSet<Student> Students { get; set; }
    public DbSet<StudentAddress> StudentAddresses { get; set; }

در کد بالا قسمت زیر مسئول پیکربندی relationship می باشد.

modelBuilder.Entity<Student>()
    .HasOne<StudentAddress>(s => s.Address)
    .WithOne(ad => ad.Student)
    .HasForeignKey<StudentAddress>(ad => ad.AddressOfStudentId);

در قسمت بعدی از این آموزش در رابطه با همین مبحث صحبت خواهیم کرد.

مرتضی گیتی
بدون نظر

ارسال نظر

نظر
نام
ایمیل
وب سایت