Bu örneğimizde WPF form üzerinden Entity Framework kullanarak SQL Server üzerinde bulunan veritabanımıza bağlanarak veri çekme,veri ekleme,veri silme ve veri güncelleme işlemlerini anlatan basit bir örnek yapacağız. Yazının sonunda programa ait video da bulunmaktadır.
Sql Server’ da “dbOkul” isimli bir database oluşturarak içine “ogrenci” tablosunu ekleyerek uygulamamıza başlayalım.
Veritabanımızı yukarıdaki gibi oluşturduktan sonra içine deneme amaçlı birkaç kayıt giriyoruz. Daha sonra Visual Studio programında WPF form olarak yeni bir proje açıyoruz. Projemizi açtıktan sonra Solution Explorer penceresinde sağ tıklayarak aşağıdaki adımları takip ediyoruz.
Finish butonuna basarak işlemimiz tamamlıyoruz.
Bağlantı işlemini bitirdikten sonra Projemizin tasarımını yapıyoruz.
Projemizin XAML kodları;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<Window x:Class="entity_ornek.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded"> <Grid> <DataGrid Name="dgogrenci" HorizontalAlignment="Left" AutoGenerateColumns="False" Height="185" Margin="22,37,0,0" VerticalAlignment="Top" Width="246"> <DataGrid.Columns> <DataGridTextColumn Binding="{Binding Numara}" Header="Öğrenci No" /> <DataGridTextColumn Binding="{Binding Ad}" Header="Öğrenci Adı" /> <DataGridTextColumn Binding="{Binding Soyad}" Header="Öğrenci Soyadı" /> </DataGrid.Columns> </DataGrid> <TextBox Name="txtno" HorizontalAlignment="Left" Height="23" Margin="371,61,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="120"/> <TextBox Name="txtad" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="120" Margin="371,89,0,0"/> <TextBox Name="txtsoyad" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="120" Margin="371,117,0,0"/> <Button Content="Kaydet" HorizontalAlignment="Left" Margin="371,145,0,0" VerticalAlignment="Top" Width="120" Height="36" Click="Button_Click"/> <Button Content="Sil" HorizontalAlignment="Left" Height="36" Margin="371,186,0,0" VerticalAlignment="Top" Width="120" Click="Button_Click_1"/> <Button Content="Güncelle" HorizontalAlignment="Left" Height="39" Margin="371,227,0,0" VerticalAlignment="Top" Width="120" Click="Button_Click_2"/> </Grid> </Window> |
Sıra C# kodlarında
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace entity_ornek { public partial class MainWindow : Window { dbOkulEntities db; public MainWindow() { InitializeComponent(); } private void Window_Loaded(object sender, RoutedEventArgs e) { db = new dbOkulEntities(); //Datagride öğrenci dgogrenci.ItemsSource = db.ogrencis.ToList(); //listesi getiriyoruz. } private void Button_Click(object sender, RoutedEventArgs e) // Kaydetme işlemi { ogrenci yeniogrenci = new ogrenci(); yeniogrenci.Numara = Convert.ToInt32(txtno.Text); yeniogrenci.Ad = txtad.Text; yeniogrenci.Soyad = txtsoyad.Text; db.ogrencis.Add(yeniogrenci); db.SaveChanges(); dgogrenci.ItemsSource = db.ogrencis.ToList(); //Kayıt ekledikten sonra yenilemek için // İstersek bir metot oluşturup tekrar yazmak zorunda kalmayız. } private void Button_Click_1(object sender, RoutedEventArgs e) //Kayıt Silme { int silinecek = Convert.ToInt32(txtno.Text); var silinecekkisi = db.ogrencis.Where(w => w.Numara == silinecek).FirstOrDefault(); db.ogrencis.Remove(silinecekkisi); db.SaveChanges(); dgogrenci.ItemsSource = db.ogrencis.ToList(); } private void Button_Click_2(object sender, RoutedEventArgs e) //Kayıt Güncelleme numaraya göre yapacağız { int guncelle = Convert.ToInt32(txtno.Text); var guncellenecekogrenci = db.ogrencis.Where(w => w.Numara == guncelle).FirstOrDefault(); guncellenecekogrenci.Ad = txtad.Text; guncellenecekogrenci.Soyad = txtsoyad.Text; db.SaveChanges(); dgogrenci.ItemsSource = db.ogrencis.ToList(); } } } |
İşlem tamam! Artık programımızı çalıştırabiliriz.