Kalitlar
Entity Framework da jadvalda birlamchi kalit mavjudligi talab qilinadi. Ushbu kalit orqali ob’ektlar nazorat qilinadi. Entity Framework da kalitlar Id yoki [Tip_nomi]Id kabi formatga ega bo’ladi. Masalan, Post klassda PostId ustuni ushbu vazifani bajaradi.
Kalitlar asosan int yoki GUID tipiga mansub bo’ladi. Shuningdek, boshqa tipga mansub kalitlarni hosil qilish mumkin.
Jadval va ustun nomlari
Entity Framework dagi PluralizationService klassi orqali modelga mos klass va jadval nomlari o’rtasida moslik o’rnatiladi. User klassiga mos jadval nomi – Users, Person klassiga mos jadval nomi – People kabi bo’lishi mumkin.
Jadval ustunlarini nomlari klass xuxsusiyatlari nomlariga mos bo’lishi lozim. Agar bizni jadval va ustun nomlari qanoatlantirmasa, Fluent API yoki аnnotatsiyalar orqali boshqa mexanizmdan foydalanishimiz mumkin.
Code First avtomatizatsiyasi
Agar DB dа jadvallar aniqlanga bo’lsa, ularga mos klasslarni hosil qilish juda ko’p amallar va vaqtni talab qilishi mumkin. Ushbu amallar agar jadvallar soni ko’p bo’lmagan holda amalga oshirib bo’lmaydi.
Visual Studio 2013 ning SP3 yangilash paketi o’rnatilgan bo’lsa, ushbu jarayonni avtomatlashtirish mumkin. Buning uchun loyihada yangi ADO.NET Entity Data Model elementini qo’shamiz:
OK tugmasi bosilsa, bizda modelni hosil qilish muloqot oynasi hosil qilinadi. So’ngra ushbu muloqot oynasidan Code First from database qismini tanlash lozim.
Keyingi qadamda mavjud DBga ulanishni hosil qilishimiz lozim.
Ushbu muloqot oynasidan New Connection tugmasini bosamiz va hosil qilingan oynadan server va DBni tanlashimiz lozim:
Ushbu muloqot oynasida tanlangan serverga ((localdb)\v11.0) ulanish namoyish qilingan. Shuningdek, ushbu muloqot oynasidа App.config konfiguratsiya faylida ishlatiladigan ulanish satri nomini ham keltirishimiz mumkin. Uni misol sifatida UserContext ga o’zgartiramiz:
So’ngra Next tugmasini bosamiz va keying qadamda biz DBdagi ishlashimiz zarur bo’lgan jadvallarni tanlashimiz lozim.
So’ngra Finish tugmasini bosing. Shundan so’ng DBdagi jadvallarga mos model klasslari generatsiya qilinadi. Bizning misoda quyidagi klass generatsiya qilinadi:
namespace NewAutoCodeSecond
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.Spatial;
public partial class User
{
public int Id { get; set; }
[Required]
[StringLength(50)]
public string Name { get; set; }
public int Age { get; set; }
}
}
Shuningdek, App.config faylida ulanish satri hosil qilingan:
Endi loyihamizga ma’lumotlar konteksti klassini shakllantirishimiz lozim.
using System;
using System.Collections.Generic;
using System.Data.Entity;
namespace NewAutoCodeSecond
{
class UserContext : DbContext
{
public UserContext()
: base("UserContext")
{ }
public DbSet Users { get; set; }
}
}
Endi biz DB bilan ishlashimiz mumkin:
using System;
namespace NewAutoCodeSecond
{
class Program
{
static void Main(string[] args)
{
using (UserContext db = new UserContext())
{
foreach (User u in db.Users)
Console.WriteLine("{0}.{1} - {2}", u.Id, u.Name, u.Age);
}
Console.ReadKey();
}
}
}
Yuqoridagi texnologiya asosida yana bir misolni ko’rib chiqamiz:
|