|
VS 2013 da yangi (DbFirstApp
|
bet | 15/53 | Sana | 30.11.2023 | Hajmi | 1,39 Mb. | | #108476 |
Bog'liq Dasturiy injiniringVS 2013 da yangi (DbFirstApp) konsol loyihasini hosil qiling.
Loyihaga yaqin ADO.NET Entity Data Model elementini qo’shing.
Muloqot oynasidan EF Designer from database qismini tanlang.
Ro’yxatdan zarur bo’lgan ulanishni tanlang. Agar ro’yxatda bizga kerakli ulanish mavjud bo’lmasa, New Connection tugmasini bosib, yangi ulanishni shakllantiring . Bizning misolda AdventureWorks2012 bazasi bilan aloqa o’rnatilishi zarur.
Zarur bo’lgan EF 6.х versiyasini tanlang.
Jadvallar ro’yxatini Production.Product va Production.ProductListPriceHistory jadvallarini tanlang.
Natijada loyihada quyidagi diagramma shakllantiriladi:
Endi ushbu modellar asosida DBdan olingan ma’lumotlar ustida quyidagi amallarni bajaruvchi dastur tuzing:
Eng qimmat tovar narxi va rangi qizil bo’lgan tovarlar summasi:
using System;
using System.Linq;
namespace DbFirstApp
{
class Program
{
static void Main(string[] args)
{
using (ProductContext db = new ProductContext())
{
decimal minPrice = db.Products.Max(p => p.ListPrice);
Console.WriteLine("Eng qimmat tovar narxi: {0}", minPrice);
decimal sum = db.Products.Where(p => p.Color.Contains("Red")).Sum(p => p.ListPrice);
Console.WriteLine("Rangi qizil bulgan tovarlar summasi: {0}", sum); }
Console.ReadLine();
}
}
}
Tovarlarning ranglari bo’yicha nechtadan mavjudligini aniqlash:
using System;
using System.Linq;
namespace DbFirstApp
{
class Program
{
static void Main(string[] args)
{
using (ProductContext db = new ProductContext())
{
var groups = from p in db.Products
group p by p.Color into g
select new { Color = g.Key, Count = g.Count() };
foreach (var p in groups)
Console.WriteLine("{0} : {1}", p.Color, p.Count);
}
Console.ReadLine();
}
}
}
Rangi qora va narxi 15000 dan qimmat bo’lgan tovarlar ro'yxati aniqlansin:
using System;
using System.Linq;
namespace DbFirstApp
{
class Program
{
static void Main(string[] args)
{
using (ProductContext db = new ProductContext())
{
var products = db.Products.Where(p => p.ListPrice> 15000)
.Union(db.Products.Where(p => p.Color.Contains("Black")));
foreach (Product p in products)
Console.WriteLine("{0} : {1}", p.Name, p.ListPrice);
}
}
Console.ReadLine();
}
}
}
Model First
Model First yondashuvi orqali Entity Framework bilan imkoniyati mavjud. Ushbu yondashuv asosida avvalo model hosil qilinadi. So’ngra u asosida DB yaratiladi.
Buning uchun avvalo Console Application yangi loyihasini hosil yaratamiz . So’ngra ushbu loyihaga yangi elementni qo’shib qo’yamiz. Solution Explorer dagi loyiha nomini ustiga sichqonchaning o’ng tugmasini bosib, Add -> New Item qismini tanlaymiz.Keyingi qadamda hosil qilingan ro’yxatdan ADO.NET Entity Data Model ni tanlaymiz.
Ushbu modelimiz insonni tavsiflashgani uchun unga User nomini beramiz va ОК tumasini bosamiz. Agar bizda Visual Studio ning SP2, SP3 paketlari o’rnatilgan bo’lsa, u quyidagi ko’rinishga ega:
Ushbu oyna orqali to’rtta variantdagi modelni hosil qilish mumkin. Ushbu roýhatdan Empty EF Designer Model ni tanlashimiz va Finish tugmasini bosishimiz lozim. Natijada bizda modelni bo’sh hosil qilish oynasi taqdim etiladi:
Ushbu oynaga Toolbox (Панель Инструментов) oynasidan Entity elementini olib joylashtiramiz. Endi bizda hosil qilishi lozim bo’lgan modelning sxemasi mavjud. Unda boshlang‘içh xolda faqat bitta Id maydoni mavjud. Birinchi navbatda ob’ektga yangi nom beramiz. Boshlang‘ich holda u Entity1 ga teng. Sxemani tanlab ekranning o’ng qismida joylashgan loyihaning xususiyatlar qismiga o'tamiz.
Ushbu oynada Name xususiyati qiymatini User ga o’zgartiramiz. Bu qiymat biz yaratayotgan model (ob’ekt) nomi hisoblanadi. Keyingi qadamlarda ushbu modelga mos bir nechta xususiyatlarni shakllantiramiz. Bizning misoldagi (User) modelimizda inson FIO va yoshi mavjud. Sxemani tanlab, sichqonchaning o’ng tugmasini bosamiz. Hosil qilingan menyudan Add New -> Scalar Property ni tanlaymiz. Shundan so’ng modelda yangi xususiyat hosil qilinadi.
Scalar Property orqali modelda oddiy (int, float, string) tipga mansub xususiyatlarni hosil qilish mumkin. Ikkita Name va Age xususiyatlarini shakllantiramiz. Ularning ikkalasi ham boshlang‘ich holda string tipiga mansub bo’ladi. Ushbu xususiyatlarga mos tiplarni xususiyatlar oynasidan o’zgartirishimiz mumkin.
Barcha zaruriy amallarni bajarganimizdan so’ng, quyidagi rasmda keltirilgan ob’ekt hosil qilinishi lozim:
Modelni shakllantirganimizdan so’ng uni loyihaga Rebuild opsiyasi yangilab qo’yamiz. Endi ushbu modelga mos tuzilmani DBda hosil qilish mumkin. Avvalo model kodini generatsiya qilamiz. Buning uchun model diagrammasida sichqonchaning o’ng tugmasini bosib, Add Code Generation Item qismni tanlaymiz.
Natijada EF versiyasini tanlash taklif qilinadi:
Shundan so’ng loyiha tuzilmasida User.tt tuguni hosil bo’ladi. Ushbu tugunda model klassi User.cs joylashgan.
Shuningdek, ushbu tugunda ma’lumotlar konteksti fayli User.Context.cs ham mavjud. U quyidagi kodga ega:
namespace ModelFirstApp
{
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
public partial class UserContainer : DbContext
{
public UserContainer()
: base("name=UserContainer")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet UserSet { get; set; }
}
}
Endi ushbu modelga mos jadvallarni DBda hosil qilamiz. Buning uchun model diagrammasida sichqonchaning o’ng tugmasini bosib, Generate Database from Model(Сгенерировать базу данных по модели) ni tanlaymiz. Natijada bizga DBga ulanishni hosil qilish interfeysi taqdim etiladi:
Ushbu muloqot oynasidan New Connection(Новое подключение) qismni tanlaymiz. So’ngra bizga ulanishni hosil qilish va DBni yaratish amalgi o'tiladi:
Ushbu muloqot oynasida server nomini va hosil qilinayotgan DB kiritish lozim. DB nomi sifatida usersdb kiritamiz. Server nomi sifatida usersdb ni kiritamiz. So’ngra OK tugmasini bosamiz. Natijada Visual Studio modelga ulanish satri va DB nomini quyidagicha shakllantiradi:
Shundan so’ng DB skripti hosil qilinadi:
So’ngra Finish tugmasini bosamiz. Visual Studioda avtomatik tarzda User.edmx.sql skript fayli ochiladi. Oxirgi qadamda biz ushbu skriptni ishga tushirishimiz lozim. Buning uchun yuqori chap qismdagi Execute (Выполнить) tugmasini bosish lozim:
Natijada Visual Studio oynasida yuqoridagi amallarning omadli yoki omadsiz bajarilganligi haqidagi xabar chiqariladi. View->Other Windows dagi Database Explorer oynasi ochib, hozir hosil qilingan DBni ko’rishimiz mumkin:
Yuqorida keltirilgan amallar modellar va DBni hosil qilish uchun zarur. Oxirgi qadamda ushbu hosil qilingan DB bilan ba’zi amallarni bajaramiz.
static void Main(string[] args)
{
using (UserContainer db = new UserContainer())
{
//ma’lumotlar qo’shish
db.Users.Add(new User { Name = "Tom", Age = 45 });
db.Users.Add(new User { Name = "John", Age = 22 });
db.SaveChanges();
// ma’lumotlarni olish
var users = db.Users;
foreach (User u in users)
Console.WriteLine("{0}.{1} - {2}", u.Id, u.Name, u.Age);
}
Console.Read();
}
Entity Framework asoslari
Ma’lumotlar ustida asosiy amallar
Ko’pgina ma’lumotlar ustida CRUD-amallari (Create, Read, Update, Delete) bajariladi. Ya’ni ma’lumotlarni olish, yozish, o’zgshartirish va o’chirish amallari. Entity Framework orqali ushbu amallarni tezda amalga oshirish mumkin.
Yuqoridagi amallarni bajaruvchi loyihani shakllantiramiz. Windows Forms tipiga mos loyihani yaratamiz. Yangi loyihada futbolchilar bazasi ustida ish bajarilsin. Yangi loyihada DB bilan ishlash uchun Code First yondashuvidan foydalanamiz.
Avvalo loyihaga futbolchilarni ifodalovchi klassni qo’shib qo’yamiz:
class Player
{
public int Id { get; set; }
public string Name { get; set; }
public string Position { get; set; }
public int Age { get; set; }
}
Ushbu klassda futbolchilar to’rtta xususiyat orqali aniqlangan: Id, FIO, maydondagi pozitsiyasi va yoshi. Shuningdek, NuGet orqali Entity Framework paketini ham loyihada o’rnatish va ma’lumotlar kontekstini hosil qilish lozim.
using System.Data.Entity;
namespace NewModelFirstApp
{
class SoccerContext : DbContext
{
public SoccerContext()
: base(“DefaultConnection”)
{ }
public DbSet Players { get; set; }
}
}
Shuningdek, loyihadagi App.config faylida ulanish satri hosil qilish lozim:
Endi loyihaning vizual qismini shakllantiramiz. Bizning loyihada Form1 formasi mavjud. Ushbu formaga DataGridView elementini qo’shib qo’yamiz. Ushbu element orqali DBdagi zarur ma’lumotlar namoyish qilinadi. Shuningdek, ma’lumotlar ustida amal bajarish uchun qo’shish, o’zgartirish va o’chirish amallariga mos tugmalar hosil qilamiz:
|
| |