22 Ağustos 2014 Cuma

ADO.NET Entity Framework Giriş

Bu makalemizde Microsoftun ORM araçlarından Entity Framework yapısını kullanarak bir data modeli oluşturacağız ve bu model ile veritabanından nasıl select işlemi yapacağımızı öğreneceğiz.
Entity Framework hakkında teorik bilgileri internette bolca bulabilirsiniz bu yüzden bu konulara değinmeyi düşünmüyorum. İlk olarak visual studio 2008 veya 2010 kullanarak yeni bir websitesi oluşturalım. Oluşturduğumuz web sitesine aşağıdaki gibi bir “entity framework data model” ekleyelim.

Yukarıda gördüğünüz gibi ADO.NET Entity Data Model’i seyiyoruz ve bir isim veriyoruz. Daha sonra add deyip diğer adıma geçiyoruz.
Biz bu örneğimizde modelimizi var olan bir veritabanı üzerinden oluşturacağız. Tam aksine önce modeli oluşturup EntityFramework’ün veritabanını kendisinin oluşturmasını sağlayabiliriz. Next dedikten sonra gelen ekranda “new connection” deyip aşağıdaki ekranda gördüğümüz gibi var olan bir veritabanı için connection oluşturuyoruz.

Örneğimizde AdventureWorks veritabanını kullanıyoruz.
Bağlantı ayarlarımız yaptığımız zaman yukarıdaki ekranda bu bağlantı bilgisi için web.config dosyasında kullanılacak ismi belirleyip next diyoruz.
Gelen yukarıdaki ekranda “Tables” sekmesini seçip kullanacağımız tabloları seçiyoruz. Biz örneğimizde Product , productCategory ve productSubCategory tablolarını kullanıyoruz. Bu adımda Finish dediğimiz zaman modelimiz kullanılmaya hazır hale gelecek. Modelimizin görüntüsü aşağıdaki gibi olacaktır.


Şimdi gelelim bu modeli kullanarak veritabanından nasıl veri çekeceğimize.
Default.aspx sayfasına bir iki adet dropdownlist ve bir adette gridview ekleyelim. Sayfamızın html kısmı aşağıdaki gibi olacak.
<table>
    <tr>
        <td>
            <asp:DropDownList ID="KategoriDropDownList" AutoPostBack="true"runat="server" OnSelectedIndexChanged="KategoriDropDownList_SelectedIndexChanged">
            </asp:DropDownList>
        </td>
        <td>
            <asp:DropDownList ID="AltKategoriDropDownList" runat="server">
            </asp:DropDownList>
        </td>
        <td>
            <asp:Button ID="UrunleriGetirButton" runat="server" Text="Ürünleri Getir" OnClick="UrunleriGetirButton_Click" />
        </td>
    </tr>
    <tr>
        <td colspan="3">
            <asp:GridView ID="UrunlerGridView" runat="server">
            </asp:GridView>
        </td>
    </tr>
</table>

Şimdi ilk olarak sayfa yüklenirken kategori dropdownlistini dolduralım. Kategori seçilincede alt kategorileri dolduralım.
İlk olarak kategorileri doldurmak için aşağıdaki kodu yazın.
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        KategorileriGetir();
    }
}

private void KategorileriGetir()
{
    DemoEntities entity = new DemoEntities();
    List<DimProductCategory> kategoriList = entity.DimProductCategory.ToList();
    KategoriDropDownList.DataSource = kategoriList;
    KategoriDropDownList.DataValueField = "ProductCategoryKey";
    KategoriDropDownList.DataTextField = "EnglishProductCategoryName";
    KategoriDropDownList.DataBind();


}

İkinci olarak kategori seçildiği zaman aşağıdaki kodu yazarak alt kategorileri dolduralım.
protected void KategoriDropDownList_SelectedIndexChanged(object sender, EventArgse)
{
    int KategoriKey = Int32.Parse(KategoriDropDownList.SelectedValue);
    DemoEntities entity = new DemoEntities();

    var query = from c in entity.DimProductSubcategory
                where c.DimProductCategory.ProductCategoryKey == KategoriKey
                select c;

    AltKategoriDropDownList.DataSource = query.ToList(); ;
    AltKategoriDropDownList.DataValueField = "ProductSubcategoryKey";
    AltKategoriDropDownList.DataTextField = "EnglishProductSubcategoryName";
    AltKategoriDropDownList.DataBind();
}

Yukarıdaki adımları tamamladığımız zaman kategori ve alt kategori alanları ile olan işlemimiz bitmiş oluyor. Şimdi ise ürünleri getir butonuna basınca seçilen kategorideki ürünleri alıp gridview içine atalım.
protected void UrunleriGetirButton_Click(object sender, EventArgs e)
{
    int AltKategoriKey = Int32.Parse(AltKategoriDropDownList.SelectedValue);
    DemoEntities entity = new DemoEntities();

    var query = from p in entity.DimProduct
                where p.DimProductSubcategory.ProductSubcategoryKey == AltKategoriKey
                select new { p.ProductKey, p.EnglishProductName, p.Color, p.TurkishDescription };

    UrunlerGridView.DataSource = query.ToList(); ;
    UrunlerGridView.DataBind();
}

Yukarıdaki kodu inceleyecek olursanız product tablosunda sadece istediğimiz kolonları getirdik, bunun içinde new deyip yeni bir tanımlama yaptık.
Sonuç olarak işlemlerin sonucunda aşağıdaki gibi bir ekran çıktımız oldu.

Hiç yorum yok:

Yorum Gönder