08 December 2016

LINQtoSQL Örnekleri

LINQtoSQL örneklerine bu yazıda yer vereceğim.

Örnek 1: Formda bir adet ComboBox olsun ve yapmak istediğimiz kategorileri veritabanından çekip ComboBox’da listelemektir. Öncelikle projeye bir adet LINQ to SQL Clasess ekleyelim (Northwind.dbml). Veritabanında bulunan tüm tabloları bu dosyanın üzerine sürükleyip bırakalım. Böylece, gereken sınıfların oluşturulduğunu görebiliriz.

Kategorileri çekip ComboBox’da listeleyelim:

NorthwindDataContext db = new NorthwindDataContext();
 cbKategoriler.DataSource = db.Categories;
 cbKategoriler.DisplayMember = "CategoryName";
 cbKategoriler.ValueMember = "CategoryID";

Örnek 2: Forma bir adet ListBox ve dataGridView ekleyelim. Listbox’da kategoriler listelenecek ve her kategoriye tıklandığında o kategoriye ait ürünlere ait herşey dataGridView’de listelenecek:

NorthwindDataContext db = new NorthwindDataContext();
 private void Form2_Load(object sender, EventArgs e)
 {
 lstCategories.DataSource = db.Categories;
 lstCategories.DisplayMember = "CategoryName";
 lstCategories.ValueMember = "CategoryID";
}
private void lstCategories_SelectedIndexChanged(object sender, EventArgs e)
 {
 Category seciliCategory = lstCategories.SelectedItem as Category;
 //select * from Product where categoriID=@id
 dataGridView1.DataSource = seciliCategory.Products;

 }

Örnek 3: Bir önceki örneğimize benzer olarak ListBox ekleyip kategorileri listeleyelim. Ve kategorilere tıklandığına ürün id, adı, fiyatı, stok miktarı da listView’da listelensin:

private void Form3_Load(object sender, EventArgs e)
 {
 lstCategories.DataSource = db.Categories;
 lstCategories.ValueMember = "CategoryId";
 lstCategories.DisplayMember = "CategoryName";
 }
private void lstCategories_SelectedIndexChanged(object sender, EventArgs e)
 {
 listView1.Items.Clear();
try
 {
 int categoryId = (int)lstCategories.SelectedValue;
 var gelenurunler = from p in db.Products
 where p.CategoryID == categoryId
 select new
 {
 p.ProductID,
 p.ProductName,
 p.UnitsInStock,
 p.UnitPrice
 };
foreach (var urun in gelenurunler)
 {
 ListViewItem list = new ListViewItem();
 list.Text = urun.ProductID.ToString();
 list.SubItems.Add(urun.ProductName);
 list.SubItems.Add(urun.UnitPrice.ToString());
 list.SubItems.Add(urun.UnitsInStock.ToString());
 listView1.Items.Add(list);
 }
 }
 catch
 {

 }
 }

Örnek 4: Resimdeki gibi bir form oluşturalım. Çalışan bilgilerini ListView’de listeleyelim. Butonlara tıklanınca Insert, update ve delete işlemleri yapılmasını sağlayalım:

LINQtoSQL Örnekleri

public partial class Form4 : Form
 {
 public Form4()
 {
 InitializeComponent();
 }
 void CalisanlariGetir()
 {
 listView1.Items.Clear();
 List<Employee> calisanlar = db.Employees.ToList();
 foreach (Employee calisan in calisanlar)
 {
 ListViewItem list = new ListViewItem();
 list.Text = calisan.FirstName;
 list.SubItems.Add(calisan.LastName);
 list.SubItems.Add(calisan.City);
 list.SubItems.Add(calisan.Country);
 list.Tag = calisan;
 listView1.Items.Add(list);
 }
 }
NorthwindDataContext db = new NorthwindDataContext();
private void Form4_Load(object sender, EventArgs e)
 {
 CalisanlariGetir();
 }
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
 {
 Employee calisan = listView1.FocusedItem.Tag as Employee;
 txtFirstname.Text = calisan.FirstName;
 txtLastname.Text = calisan.LastName;
 txtSehir.Text = calisan.City;
 txtUlke.Text = calisan.Country;

 }
void Temizle()
 {
 foreach (Control cnt in this.Controls)
 {
 if (cnt is TextBox)
 {
 cnt.Text = "";
 }
 }
 }
private void btnInsert_Click(object sender, EventArgs e)
 {
 Employee calisan = new Employee()
 {
 FirstName = txtFirstname.Text,
 LastName = txtLastname.Text,
 City = txtSehir.Text,
 Country = txtUlke.Text
};
 db.Employees.InsertOnSubmit(calisan);
 db.SubmitChanges();
 CalisanlariGetir();
 Temizle();
 }
private void btnUpdate_Click(object sender, EventArgs e)
 {
 Employee calisan = (Employee)listView1.FocusedItem.Tag;
 calisan.FirstName = txtFirstname.Text;
 calisan.LastName = txtLastname.Text;
 calisan.City = txtSehir.Text;
 calisan.Country = txtUlke.Text;
 db.SubmitChanges();
 CalisanlariGetir();
 Temizle();
 }
private void btnDelete_Click(object sender, EventArgs e)
 {
 Employee calisan = (Employee)listView1.FocusedItem.Tag;
 db.Employees.DeleteOnSubmit(calisan);
 db.SubmitChanges();
 CalisanlariGetir();
 Temizle();
 }
 }

Comments

  1. misafir says:

    Listbox’da kategoriler listelenecek ve her kategoriye tıklandığında o kategoriye ait ürünlere ait herşey dataGridView’de listelenecek alanında yer alan C# kodlamanın vb.net uyarlamasını paylaşabilirmisiniz?