Eyüp ALBAYRAK

Www.EyupAlbayrak.CoM

Herkese merhabalar,

Bu yazımda sizlere POCO(Plain Old CLR Objects) ve Entitiy Framework ve N katmanlı mimari kullanarak basit anlamda e ticaret uygulamasına giriş yapmayı planlıyorum. Projemizin katmanları DAL(Data Access Layer), POCO(Plain Old CLR Objects),BLL(Business Logic Layer) ve UI(User Interface +ASP.NET ) olacak. Bol resimli bir anlatım planlıyorum umarım anlaşılır olur ve işinize yarar.

Visual Studio 2010 açıyoruz ve File New Project diyerek class library ekliyoruz. Proje ismi olarak Eticaret.POCO veriyoruz.

 



Solutiona sağ tıklayarak yeni bir class library ekliyoruz bunun ismide Eticaret. Eticaret.BLL olacak.

 

 

 

ve son kütüphane olarak DAL kütüphanemizi de ekliyoruz aynı şekilde Eticaret.DAL ismini veriyoruz.

 

 

 

Son olarakta sunum katmanımız olan ASP.NET projemizi ekliyoruz isim olarak Eticaret.Web.UI ismini verdim ileride Mobil yazmak istersek Eticaret.Mobil.UI gibi yeni bir proje daha ekleyebiliriz. Solutionun son hali aşağıdaki gibi olacak Class1.cs dosyalarını siliyoruz.

 

 

Şimdi de kütüphanelerimizi birbirlerine referans olarak ekleyeceğiz. Ekleme yöntemimiz şu şekilde olacak; BLL ye DAL ve POCO kütüphanelerini   UI a BLL ve POCO kütüphanelerini DAL a ise POCO kütüphanelerin referan olarak ekleyeceğiz. Bu sayede BLL yani Business Logic Layer katmanımız UI katmanının diğer data katmanlarına erişmesini engelleyecek ve uygulama güvenliğini sağlayacaktır.

Sırada ise Entity Framework dosyamızı oluşturmak var DAL kütüphanemize sağ tıklayarak Add New Item diyerek ADO.NET Entity Data Model i seçiyoruz isim olarakta Eticaret.edmx veriyoruz.

 

 

Database seçme kısmında boş bir model oluşturmak için Empty model seçeneği ile devam edeceğiz. Boş model ekranı karşımıza geldiğinde ise kendi Entity nesnelerimiz oluşturup propertylerimizi tanımlayıp aralarındaki ilişkileri tanımlayacağız. Forma sağ tıklayıp Add Entity diyerek oluşturma işlemlerine başlayabiliriz.

 

 

Bir E ticaret uygulaması yazdığımız için veritabanımızda olması gereken temel tablolar şunlar olmalı: Kategori, Ürün, Müşteri ve Sipariş. Entityleri ve propertyleri tanımladıktan sonra aralarındaki ilişkileride tanımlamamız lazım. 

 

İlişkileri tanımladıktan sonraki şekil aşağıdaki gibi olacak. Dikkat ederseniz entityleri tanımladığımızda  Ürün entitymizde KategoriId yoktu ilişkileri tanımladık sonra Ürün entitymizde KategoriId oluştu buda EntityFramework un nimetlerinden biri. 

 

 

Entityleri ve ilişkileri tanmladıktan sonra forma sağ tıklayarak Generate Database from Model diyelim veritabanı bağlantı bilgilerini girelim ve işlemi tamamlayalım. Oluşturduğumuz entitylerin sql scriptinin oluştuğunu göreceksiniz.  Bu aşamadan sonra script üzerine sağ tıklayarak Execute diyeceğiz ve bağlandığımız veritabanında tablolarımızın oluştuğunu göreceksiniz.

 

Tablolarımızı oluşturduktan sonra  Eticaret.POCO kütüphanemize sağ tıklayarak Add new item diyoruz ve ADO.NET POCO Entity Generatoru (Online Templates kısmından arayarak visual Studio ya eklenti olarak ekleyebilirsiniz.) seçiyoruz.

 

 

Eticaret.tt dosyamız oluştuktan sonra çift tıklayarak text modda edmx dosyamızın yolunu değiştiriyoruz. 

string inputFile = @"../Eticaret.DAL/Eticaret.edmx";

 

Aynı şeyi Eticaret.Context.tt dosyasına çift tıklayarak orada da yapıyoruz daha sonra Eticaret.Context.tt dosyamızı sürükleyerek Eticaret.DAL kütüphanemizin üzerine sürükleyerek bırakıyoruz. Daha sonra Eticaret.POCO kütüphanemizden Eticaret.Context.tt dosyasını siliyoruz.

 

Eticaret.DAL kütüphanesinde oluşan App.Config dosyasında ki connectionstring kısmını  Eticaret.Web.UI içerisindeki Web.Config içerisine yapıştırıyoruz.  

 

Şimdi sıra geldi Eticaret.BLL kütüphanemizi yazmaya. KategoriYonet isminde bir class ve name space olarak using Eticaret.BLL yi ekleyelim.  Add Reference diyerek  System.Data.Entity i BLL kütüphanemize ekliyoruz. Daha sonra KategoriYonet class ı içerisinde  kategori ekleme, silme, düzenleme ve listeleme metodlarımızı yazacağız.

 

Kategoriyonet.cs sınıfımız aşağıdaki gibi olacak. Temel olarak hangi metodların olması gerektiğini yazdım siz dilerseniz ekstra metodlar yazarak farklı işlevlerde kullanabilirsiniz. Örneğin kategori sayısını veren geri dönüş tipi Integer türünden olan bir KategoriSayisi() metodu olabilir. 

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using Eticaret.POCO;

namespace Eticaret.BLL

{

    //IDisposable dan türetmemizin sebebei nesnemizi using blokları içerisinde kullanabilmemiz

  public  class KategoriYonet:IDisposable

    {

        private EticaretContainer entities;

        public int KategoriEkle(Kategori kategori)

        {

            using (entities = new EticaretContainer())

            {

                entities.Kategori.AddObject(kategori);

                entities.SaveChanges();

                return kategori.Id;

            }

        }

        public Kategori KategoriGetir(int kategoriID)

        {

            using (entities=new EticaretContainer())

            {

                return entities.Kategori.Where(x => x.Id == kategoriID).FirstOrDefault();

            }

        }

      public void KategoriGuncelle(Kategori kategori)

        {

            using (entities=new EticaretContainer())

            {

                var sorgu = entities.Kategori.Where(x => x.Id == kategori.Id).FirstOrDefault();

                sorgu.KategoriAdi = kategori.KategoriAdi;

                entities.SaveChanges();

            }

        }

 

        public void KategoriSil(int kategoriID)

        {

            using (entities=new EticaretContainer())

            {

                var sorgu = entities.Kategori.Where(x => x.Id == kategoriID).FirstOrDefault();

                entities.Kategori.DeleteObject(sorgu);

                entities.SaveChanges(); 

            }

        }

     public List<Kategori> TumKategoriler()

        {

            using (entities=new EticaretContainer())

            {

                return entities.Kategori.ToList();

            }

        }

        public void Dispose()

        {

 

        }

    }

}

 

 

Böylece N katmanlı mimamirimizi kurduk EntityFramework ve POCO tanımlamalarımızı yaptık  sıra geldi projemizi geliştirmeye. Onlarıda bir sonraki yazımda ele alacağım UrunYonet , SiparisYonet ve MusteriYonet sınıflarımızı yazıcaz daha sonrada ASP.NET uygulamamızı yazacağız.


 



Bu yıl askere gitme hasebi ile  Sakarya Üniversitesi  BESYO(Beden eğitimi ve spor yüksek okulu ) sınavlarında bulunamayacağım ama gider ayak BESYO ya güzel işler yaparak askere gitme gururunu yaşamaktayım. İnternet üzerinden ön kayıt yazılımını tamamlalyarak gideceğim. Önceden aday evraklarını ön kayıt için getirip kayıt yaptırırdı ve sonra tekrar sınav zamanı kesin kayıt olurdu. İki farklı zamanda Sakarya'ya gelmek durumundaydı. Bizim yazılımımız sayesinde sadece web üzerinden giriş yapacak ve hesabını açıp tercih işlemlerini yapcak.Adayın kimilik bilgileri T.C. Kimlik Web Servisinden alınacak, ÖSYM verileri ilse ÖSYM Web Servisinden alınacak. Adayların ve BESYO kayıt personellerinin işlerini büyük oranda hafifleteceğini düşünmekteyim. Kolay ve kullanışlı bir arayüz ve adayların yanlış tercih yapmalarını önleyecek kontroller ile umarım sorunzu bir sınav dönemi olacak. Sınava girecek arkadaşlara ve sınavda çalışan Bilgi İşlem ve BESYO personellerine de sınav çalışmalarında başarılar dilerim.

 

 



Televizyonda Dacia Duster rekamlarını izlemişsinizdir . Bir kısmı şöyle “Bir reklam görürsün, Arabayı hayal edersin, Çok çalışırsın, Arabayı alırsın, İlgi çekersin, Koşturduğuna değmeden HEVESİN KAÇAR!”. Bu aslında günlük hayattada öyledir. Bir işe başlarken ve bitirirken buna benzer  şeylerle karşılaşabilirsiniz. Örnek verirsek “Bir proje gelir, Analiz yaparsın, Veritabanı tasarlarsın, Çok çalışırsın, Geceleri uyuyamazsın, Bitirirsin, Kimse bir teşekkür bile etmez eline sağlık demez ,Saftirikler hatalarını bulmak için çabalar, Oraya buraya duyurur, Koşuşturduğuna değmeden HEVESİN KAÇAR.” 

Eğer yazılımcıysanız, ve bir devlet kurumunda çalışıyorsanız canla başla projeler geliştirip bir şeyler üretip faydalı olmaya çalışıyorsanız ve bunun karşılığında bir beklenti içine girmeyin. Zaten maddi olarak kimse bir şey yapamaz sonuçta devlet işi. canla başla çalışmanız için insanların işlerini daha da kolaylaştırdığınız için bir teşekkür  bekliyorsanız onuda beklemeyin.

Size o teşekkürü çok gören o güzel insanlar  yaptığınız işlerdeki bug(hata) ları duyurmak için sizi demoralize etmek için mail atmadıkları yer bırakmazlar. O yüzden devlet kurumundaki arkadaşlara tavsiyem devletinizi milletinizi seviyorsanız çok çalışın üretin kendinizi geliştirin ama ufak bir hata bile yapmayın ve en önemlisi bir teşekkür bile beklemeyin yoksaaaaa “HEVESİNİZ KAÇAR”

 



Ticari bir amaç gütmeden, Otomobil finans ve sigorta dünyasından haberleri ve kampanyaları güncel olarak yayınlamak amacıyla yayın hayatıa başlamıştır.  Sistem .Net Framework 4.0 ile kodlanmıştır. Sorgulama dili olrak Linq kullanılmıştır. Veritabanı olarak ise MsSql 2008 dir.