مشخصات مقاله
-
606
-
0.0
-
3802
-
0
-
0
آموزش Convention One To One در Entity Framework Core
آموزش قراردادهای نوشتاری برای تعریف ارتباط یک به یک در Entity Framework Core
آموزش Convention One To One در Entity Framework Core
Entity Framework Core به ما امکان ایجاد کلاس هایی را می دهد که رابطه یک به یک بین جدول های متناظر آن ها به صورت خودکار ایجاد شود. این قابلیت در EF 6 یا نسخه های قبلی آن نبود.
در EF Core یک رابطه ی one-to-one به یک navigation property در هر دوسوی رابطه احتیاج دارد. در مثال زیر دو موجودیت Student وStudentAddress و قواعد نوشتاری لازم برای ایجاد یک رابطه ی یک به یک، پیروی می کنند.
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 StudentId { get; set; }
public Student Student { get; set; }
}
در مثال بالا، موجودیت Student حاوی یک navigation property از نوع StudentAddress است و موجودیت StudentAddress حاوی یک کلید خارجی StudentId و property متناظر آن Student است. این شیوه تعریف موجب ایجاد رابطه ی یک به یک بین جداول متناظر آن دو می شود:
EF Core یک unique index روی ستون کلید خارجی StudentId در جدول StudentAddresses ایجاد می کند. همانطور که لازمه ی رابطه یک به یک است، این ایندکس برای اطمینان از این است که مقدار کلید خارجی StudentId در جدول StudentAddress یکتا باشد.
نکته: Unique constraint در EF Core پشتیبانی می شود اما در EF 6 پشتیبانی نمی شود. به همین دلیل است که EF 6.x از تعریف روابط یک به یک پشتیبانی نمی کند.
اگر موجودیت ها از این قواعد نوشتاری پیروی نمی کنند از Fluent API برای تعریف این روابط استفاده کنید.