Visual Studio 2013 SP2, SP3 versiyalarida EF 6ishlatiladi. Shuning uchun ushbu qadam tashlab o‘tiladi. So‘ngra Visual Studio DB haqidagi barcha ma’lumotlarni oladi:
So‘ngra Tables qismini tanlaymiz. Natijada DBda mavjud jadvallar ro‘yxati keltiriladi. Bizning misolda u faqat bitta Users jadvalidan iborat. Tables tugunidagi barcha qismlarni tanlaymiz.
Model Namespacemaydonida modelga mos nomni yozamiz va Finish tugmasini bosamiz. Shundan so‘ng Entity Framework DB asosida modelni generatsiya qiladi va uni loyihaga qo‘shib qo‘yadi.
Visual Studiobizga model sxemasini ko‘rsatadi. Bizning misolda DBda faqat bitta Users jadvali mavjudligi sababli, sxemada faqat bitta User ob’ekti namoyish qilinadi.
Ob’ekt tanlanganidan so‘ng, Visual Studio ning yuqori o‘ng qismida ushbu ob’ektga mos xususiyatlarni ko‘rishimiz mumkin.
Xususiyatlar oynasidagi Name xususiyati ob’ekt namoyish qilinadigan klassni ko‘rsatadi. Entity Set Name xususiyati orqali ob’ektlar ro‘yxati nomi (ma’lumotlar kontekstidagi DbSet xususiyati) keltirilgan. Bizning misolda ushbu qiymat Users ga teng.
Endi oddiy dastur yaratib, ma’lumotlar ustida ba’zi amallarni bajaramiz:
using (userstoredbEntities db = new userstoredbEntities())
{ var users = db.Users;
foreach (User u in users)
Console.WriteLine("{0}.{1} - {2}", u.Id, u.Name, u.Age); }
Yuqoridagi texnologiya asosida yana bir misolni ko‘rib chiqamiz:
1. VS 2013 da yangi (DbFirstApp) konsol loyihasini hosil qiling.
2. Loyihaga yangi ADO.NET Entity Data Model elementini qo‘shing.
3. Muloqot oynasidan EF Designer from database qismini tanlang.
4. 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.
5. Zarur bo‘lgan EF 6.x versiyasini tanlang.
6. Jadvallar ro‘yxatidan Production.Product va Production.ProductListPriceHistory jadvallarini tanlang.
7. Natijada loyihada quyidagi diagramma shakllantiriladi:
8. Endi ushbu modellar asosida DBdan olingan ma’lumotlar ustida quyidagi amallarni bajaruvchi dastur tuzing:
a. 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();
}
}
}
b. 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();
}
}
}
c. 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();
}
}
}
Foydalanish uchun tavsiya etiladigan adabiyotlar Троелсен Эндрю, Джепикс Филипп. Язык программирования C# 7 и платформы .NET и .NET Core. Вилямс. 2018
Албахари Бен, Албахари Джозеф. C# 7.0. Справоchник. Полное описание языка. Пер. с англ.-СПб: “Алфа-книга”, 2018, -1024 с.
Ю.С. Магда C#. Язык программирования Си Шарп. – Изд. ДМК Пресс, 2013, 190 с.
Лабор В.В. C#: Создание приложение для Windows. – Мн.: Харвест, 2003, 384 с.