مشخصات مقاله
-
793
-
0.0
-
3328
-
0
-
0
آموزش قراردادهای نوشتاری در Entity Framework Core
قراردادهای نوشتاری در Entity Framework Core
آموزش قراردادهای نوشتاری در Entity Framework Core
قراردادهای نوشتاری قوانینی هستند که EF با استفاده از آن ها مدلی براساس domain class های پروژه می سازد. در بخش ساخت اولین اپلیکیشن با EF Core، دیتابیس را از روی کلاس های domain و context بدون config های اضافه ساختیم، چرا که کلاس های domain از این قراردادهای نوشتاری پیروی می کردند.
Entity ها و context زیر را در نظر بگیرید:
public class Student
{
public int StudentId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime DateOfBirth { get; set; }
public byte[] Photo { get; set; }
public decimal Height { get; set; }
public float Weight { get; set; }
public int GradeId { get; set; }
public Grade Grade { get; set; }
}
public class Grade
{
public int Id { get; set; }
public string GradeName { get; set; }
public string Section { get; set; }
public IList< Student > Students { get; set; }
}
public class SchoolContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"Server=.\SQLEXPRESS;Database=SchoolDB;Trusted_Connection=True;");
}
public DbSet< Student > Students { get; set; }
}بیایید EF Core convention ها را بفهمیم و ببینیم چگونه EF Core API دیتابیس را از روی entity های بالا می سازد.
Schema
EF Core همه ی database object ها را به طور پیش فرض در dbo schema می سازد.
جدول
EF Core جدول های دیتابیس را برای همه ی DbSet
به طور پیش فرض EF Core برای همه ی scaler property های هر موجودیت ستونی هم نام با آن می سازد و از رفرنس ها و collection property های درون کلاس ها برای ایجاد ارتباط بین جدول های مختلف دیتابیس استفاده می کند. نوع داده هر ستون در جدول ها به این بستگی دارد که provider چگونه نوع داده های C# را به نوع داده های دیتابیس نگاشت کرده است. جدول زیر نگاشت بین انواع داده در C# و SQL Server را نشان می دهد: EF Core برای همه ی انواع داده reference base و انواع داده هایprimitive که nullable هستند مثل string، Nullable
EF Core برای همه ی property هایی که کلید اصلی هستند، و انواع داده اصلی مثل int، float، decimal، DateTime و ... ستون های NotNull می سازد. EF Core به ازای property هایی که نامشان Id یا
EF Core API برای هر navigation property درون هر موجودیت یک ستون کلید خارجی می سازد. نام ستون ها براساس یکی از الگوهای زیر انتخاب می شود: در مثال قبل، EF Core ستون کلید خارجی GradeId را در جدول Students می سازد: جدول زیر نام ستون کلید خارجی را براساس نام property هایی که به آن رفرنس داده اند و نام کلید اصلی ها، نشان می دهد: EF Core یک ایندکس خوشه ای روی ستون های کلید اصلی و یک ایندکس غیرخوشه ای روی ستون های کلید خارجی می سازد. در بخش بعد درمورد قراردادهای نوشتاری برای تعیین ارتباط بین جدول ها صبحت می کنیم.
ستون
نوع داده ستون ها
ستون های Nullable
ستون های NotNull
کلید اصلی (Primary Key)
کلید خارجی (Foreign Key)
< Reference Navigation Property Name >Id < Reference Navigation Property Name >< Principal Primary Key Property Name >
Index