1. Entity Framework Nima?



Yüklə 113,77 Kb.
səhifə12/17
tarix28.04.2023
ölçüsü113,77 Kb.
#107514
1   ...   9   10   11   12   13   14   15   16   17
1. Entity Framework Nima

Navigation Property


Navigatsiya xususiyati boshqa entity bilan munosabatlarni aks ettiradi.
Navigatsiya xususiyatlarining ikki turi mavjud: Reference Navigation va Collection Navigation

Reference Navigation Property


Agar entity boshqa turdagi xususiyatni o‘z ichiga olsa, u ma’lumotnoma navigatsiyasi xususiyati deb ataladi. U bitta entity ishora qiladi va entity munosabatlaridagi bittadan (1) ko‘plikni anglatadi.
EF API ma’lumotlar bazasidagi boshqa jadvalning Asosiy kalitiga ishora qiluvchi navigatsiya xususiyatlari uchun jadvalda Foreign Key ustunini yaratadi. Masalan, Grade quyidagi Student entity sinfidagi mos yozuvlar navigatsiyasi xususiyatlari.
public class Student
{
// scalar properties
public int StudentID { get; set; }
public string StudentName { get; set; }
public DateTime? DateOfBirth { get; set; }
public byte[] Photo { get; set; }
public decimal Height { get; set; }
public float Weight { get; set; }
//reference navigation property
public Grade Grade { get; set; }
}
Ma’lumotlar bazasida EF API quyida ko‘rsatilganidek, Students jadvalida ForeignKey Grade_GradeId yaratadi.

Collection Navigation Property


Agar entity entity tipidagi umumiy yig‘ish xususiyatini o‘z ichiga olsa, u yig‘ish navigatsiyasi xususiyati deyiladi. Bu (*) ko‘plikni anglatadi.
EF API ob’ektning tegishli jadvalida to‘plamning navigatsiya xususiyati uchun biron bir ustun yaratmaydi, lekin umumiy kollektsiya jadvalida ustun yaratadi. Masalan, quyidagi Grade entity da ICollection umumiy yig‘ish navigatsiya xususiyati mavjud. Bu yerda Student entity umumiy tip sifatida ko‘rsatilgan, shuning uchun EF API ma’lumotlar bazasidagi Students jadvalida Grade_GradeId ustunini yaratadi.

3. Ma’lumotlar bilan ishlashga doir amaliy misol.

Ushbu operatsiyalarni bajaradigan to‘liq dasturni yaratamiz. Shunday qilib, Windows Forms kabi yangi loyihani yarataylik. Yangi dastur futbolchilarning ma’lumotlar bazasi bilan ishlaydi. Ma’lumotlar bazasi bilan o‘zaro munosabat yondashuvi sifatida biz Code First ni tanlaymiz.


Birinchidan, futbolchilarning modelini tasvirlaydigan loyihaga yangi sinf qo‘shamiz:

1
2
3
4
5
6
7

class Player
{
public int Id { get; set; }
public string Name { get; set; }
public string Position { get; set; }
public int Age { get; set; }
}

Faqat to‘rtta xususiyat mavjud: id, ism, maydondagi o‘rni va yosh. Bundan tashqari, loyihaga Nuget Entity Framework to‘plami va ma’lumotlar kontekstining yangi klassi orqali qo‘shiladi:

1
2
3
4
5
6
7
8

using System.Data.Entity;
class SoccerContext : DbContext
{
public SoccerContext()
:base("DefaultConnection")
{ }
public DbSet
Players { get; set; }
}

App.config konfiguratsiya faylidagi configSections bo‘limidan keyin connectionstrings tugunini qo‘shamiz va unda DefaultConnection qatorini aniqlaymiz:

1
2
3
4
5
6
7
8
9
10
11







providerName="System.Data.SqlClient"/>



2. Attach metodi.
Agar ob’ekt bir xil kontekstda olingan bo‘lsa va boshqa joyda saqlansa, uni EntityStateUpdated yoki EntityStateDeleted holatlarini qo‘lda o‘rnatishimiz mumkin. Lekin yana bir yo‘l bor: DbSet ob’ektida Attach metodi yordamida ob’ektni joriy ma’lumotlar kontekstiga biriktirishimiz mumkin:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

Phone p1;
using (PhoneContext db = new PhoneContext())
{
p1 = db.Phones.FirstOrDefault();
}
// o‘zgartirish
using (PhoneContext db = new PhoneContext())
{
if(p1!=null)
{
db.Phones.Attach(p1);
p1.Price = 999;
db.SaveChanges();
}
}
// o‘chirish
using (PhoneContext db = new PhoneContext())
{
if(p1!=null)
{
db.Phones.Attach(p1);
db.Phones.Remove(p1);
db.SaveChanges();
}
}

Yüklə 113,77 Kb.

Dostları ilə paylaş:
1   ...   9   10   11   12   13   14   15   16   17




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə