EF ilə əlavə etmə, yeniləmə, silmə və seçmə əməliyyatları

Bundan əvvəlki məqaləmizdə EF (Entity Framework) nə olduğunu necə istifadə edilməsini öyrəndik. İndi isə EF ilə əlavə etmə (insert), yeniləmə (update), silmə (delete) və seçmə (select) əməliyyatlarını necə həyata keçirəcəyimizlə tanış olacağıq. Məqaləmdə sadə bir proyektin EF ilə hazırlanmasını görəcəyik. Proyektin məqsədi İşçilər haqqında məlumatların saxlanılmasından ibarətdir. Bunun üçün aşağıda verilən sorğunu Verilənlər Bazasında (Database) icra etməniz lazımdır.

CREATE TABLE [dbo].[tblPersonal](
[ID] [int] IDENTITY(1,1) NOT NULL,
[AdSoyad] [nvarchar](50) NOT NULL,
[DogumTarixi] [datetime] NOT NULL,
[Ixtisas] [int] NOT NULL,
[EmekHaqqi] [money] NOT NULL,
[AileVeziyyeti] [nvarchar](10) NOT NULL,
CONSTRAINT [PK_tblPersonal] PRIMARY KEY CLUSTERED
(
[ID] ASC
)
) ON [PRIMARY]

Bu sorğunu bazada icra etdikdən sonra Modelə həmin cədvəlləri əlavə etməyimiz lazımdır. (Əvvəlki məqalədə olan cədvəlləri silərək bu cədvəlləri əlavə edirəm). Bunun EFModel.edmx üzərində sağ düyməni sıxaraq Update Model from Database seçirik. (Şəkil.1)

q1

Şəkil.1

Açılan pəncərədən Add bölməsi altında  tblPersonal işarələyib Finish düyməsini sıxırıq. Əgər bazada hər hansı cədvəl üzərində dəyişiklik edilərsə onda Refresh bölməsindən həmin cədvəli seçib Finish düyməsini sıxırıq. (Şəkil. 2)

q2

Şəkil. 2

Mən bu məqaləmdə çalışacam ki az kod yazmaqla daha effektli nəticə əldə edək.

İndi isə yuxarıda gördüyünüz tblPersonal proyektimizin Data Sources-inə əlavə edək. Data Source paneli üzərində sağ düyməni sıxaraq Add New Data Source seçirik. (Şəkil.3)

q3

Şəkil. 3

         Əgər Data Sources paneli görsənmirsə View->Other Windows->Data Sources seçərək və ya qısa yoldan klavyaturadan Shift+Alt+D sıxaraq aktivləşdirə bilərsiniz.

         Açılan pəncərdən Object seçərək Next düyməsini sıxırıq.(Şəkil. 4)

q4

Şəkil. 4

         Açılan pəncərdə Data Sources-ə Modelimizdən olan, hansı obyektləri əlavə etmək istədiyimizi seçirik. Bizim lazım olan olan tblPersonal işarələyərək Finish düyməsini sıxırıq.(Şəkil.5)

q5

Şəkil. 5

Yuxarıda göstərilən əməliyyatları yerinə yetirdikdən sonra Data Sources panelimizə tblPersonal cədvəlinin düşdüyünü görəcəyik.(Şəkil. 6)

q6

Şəkil. 6

İndi isə Form aşağıdakı formada dizayn edək.(Şəkil.7)

q7

Şəkil. 7

Yuxarıda göstərilən form dizayn etdikdən sonra Form-a bir BindingSource əlavə edirik və adını dəyişib bsEsas qoyuruq. İndi isə bsEsas-da DataSources açaraq tblPersonal seçirik.(Şəkil. 8)

q8

Şəkil. 8

bsEsas ilə işlərimizi yekunlaşdırdıqdan sonra bu DataGridView qoşuruq.(Şəkil. 9)

q9

Şəkil. 9

İndi isə proyektimizdə olan TextBox, Datetimepicker, Combobox elementlərinin DataBindigs  Text özəlliyinə bsEsas-in müvafiq sütunlarını qoşaq. (Şəkil.10) 

q10

Şəkil. 10

Kodlarımızda istifadə edə bilmək üçün Modelimizə bir ad vermək lazımdır. Bunun üçün Model Bro
wser içində proyektimizin adını (EFProyekt)  seçirik Entity Container Name bir ad yazırıq.(məs: EFContainer). (Şəkil. 11)

q11

Şəkil. 11

 

Yuxarıda göstərilən əməliyyatları yerinə yetirdikdən sonra aşağıdakı kodları yazırıq. Hər bir koddun nə iş görəcəyi ilə bağlı məlumat şərh formasında yazılıb.

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace EFProyekt
{

public partial class Form1 : Form
{
EFContainer contex = null;
//Boş tblPersonla obyektini yaradırıq. Əsas əməliyyatları bununla aparacağıq.
tblPersonal personalRow = null;

public Form1()
{
InitializeComponent();
//EFContainer-dən yeni bir obyekt yaradırıq.
contex = new EFProyekt.EFContainer();
}

private void Form1_Load(object sender, EventArgs e)
{
//Grid-imizi yeniləyirik
RefreshGrid();
}

private void RefreshGrid()
{

//tblPersonal cədvəlimizdə olan məlumatları BindingList əlavə edirik
BindingList<tblPersonal> list = new BindingList<tblPersonal>(contex.tblPersonal.ToList());
//listi BindingSourcenin data sources-inə qoşuruq.
bsEsas.DataSource = list;
}

private void DoYeni_Click(object sender, EventArgs e)
{
btOK.Text = "Əlavə et";
//tblPersonal cədvəlindən bir yeni sətir yaradırıq.
personalRow = (tblPersonal)bsEsas.AddNew();
//personalRow statusun təyin edirik. Biz burada əlavə etmə etdiyimizə görə Added seçdik.
contex.Entry(personalRow).State = EntityState.Added;
}

private void DoEdit_Click(object sender, EventArgs e)
{
btOK.Text = "Yenilə";
//personalRow statusun təyin edirik. Biz burada yeniləmə etdiyimizə görə Modified seçdik.
contex.Entry(personalRow).State = EntityState.Modified;
}

private void DoDelete_Click(object sender, EventArgs e)
{
//Seçilən sətrin silinməsi
if (MessageBox.Show("Silmək istədiyinə əminsən?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
//Silmək istədiyimiz sətri tblPersonal obyektimzdən Remove ilə silirik.
contex.tblPersonal.Remove(personalRow);
//Yerinə yetirilmiş əməliyyatları yadda saxlayırıq.
contex.SaveChanges();
//Grid-imizi yeniləyirik
RefreshGrid();
}
}

private void bsEsas_CurrentChanged(object sender, EventArgs e)
{
//Seçilən sətrin məlumatlarının götürülməsi
//Burada yoxlayırıq BindingSource seçili olanı yoxdursa yəni NULL-dursa əməliyyatı dayandırırıq.
if (bsEsas.Current == null)
return;
//Əgər hər hansı sətr seçilibsə həmin sətri personalRow əlavə edirik.
personalRow = (tblPersonal)bsEsas.Current;
}

private void btOK_Click(object sender, EventArgs e)
{
//Burada isə yeniləmə və əlavə etmə əməliyyatı aparırıq.
//BindingSource redaktə olunmasın yekunlaşdırıq
bsEsas.EndEdit();
//Statusun yoxlayırıq əgər Əlavə etmə statusundadırsa bu blok işləyəcək.
if (contex.Entry(personalRow).State == EntityState.Added)
{
//Yeni sətrimizi tblPersonal obyektinə Add metodu ilə əlavə edirik.
contex.tblPersonal.Add(personalRow);
}
//Statusun yoxlayırıq əgər Yeniləmə statusundadırsa bu blok işləyəcək.
if (contex.Entry(personalRow).State == EntityState.Added)
{
//yeniləmə zamanı etmək istdəyiniz əməliyyatları burada edirsiniz.
}
//Yerinə yetirilmiş əməliyyatları yadda saxlayırıq.
contex.SaveChanges();
//Grid-imizi yeniləyirik
RefreshGrid();
}
}
}

         Yuxarıda göstəirlən kodları yazdıqdan sonra proqramımız tam işlək hala gəlir. Siz burada Əlavə etmə, Yeniləmə, Seçmə, Silmə əməliyyatlarını yerinə yetirə bilərsiniz. (Şəkil.12)

q12

Şəkil. 12

Bu məqaləmdə Seçmə əməliyyatı haqqında qısa məlumat verildi bu haqqda məqalə tərtib etməyi düşünürəm bizi izləməyə davam edin.

         Proyektin kodlarını hazır formada verməyi düşünmürəm özünüz yuxarıda yazılanları tətbiq edərək proqramı qurmağa çalışın. Yaranacaq suallarınızı burda bildirin köməklik göstəriləcək.

Hörmətlə,

 

Elvin Yusifli

Səs: +50. Bəyənilsin Zəifdir

Müəllif: Elvin Yusifli

Şərhlər ( 2 )

  1. Çox sağol Əmioğlu. Davamı gəlsin. Əladır.

  2. Təşəkkürlər.

Şərh yazın