Hot Posts

6/recent/ticker-posts

En Basit Hâliyle Entity Framework - Simple Implementation Entity Framework on Console Application

Entity Framework, Version 6'ya kadar .NET Framework'e bağlı olup daha sonra .Net Framework'ten ayrılıp Open Source olarak dağıtılan bir ORM (Object - Relational Mapping) modelidir. 

Bu makalemizde Console Application üzerine iki tablolu basit bir Entity Modelini implement edip, çalıştıracağız.



  • Öncelikle yeni bir console uygulaması açalım. Daha sonra projemize sağ tıklayıp -> Manage Nuget Packages.. -> Browse kısmına EntityFramework paketini yükleyelim.



  • Varsayılan senaryomuzda bir okulumuz var ve veritabanlarında iki dosyamız olsun bunlar öğrenciler ve aldıkları dersler olsun. Şimdi yavaştan projemizi oluşturmaya başlayalım.
    Şimdi Students adında bir sınıf açıp içine:



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Entity;
using System.ComponentModel.DataAnnotations;
***************************************************

    class Students
    {
        [Key]
        public int StudentID { get; set; }
        public string StudentName { get; set; }
        public DateTime? DateOfBirth { get; set; }
        public byte[] Photo { get; set; }
        public decimal Height { get; set; }
        public float Weight { get; set; }
    }


Burada yazdığımız [Key] bir  Data annotation. Bu [Key] Annotation'ını hangi property'nin üzerine yazarsanız onun primary key olduğunu belirtir. Bu tabloda bizim primary key'imiz ise StudentID property'sidir.


  • Diğer tablomuzu oluşturabiliriz. Yine yeni bir sınıf oluşturup adına Grade diyelim. İçerisini aşağıdaki gibi dolduralım;



    class Grade
    {
    public int GradeId { get; set; }
    public string GradeName { get; set; }
    public string Section { get; set; }

    }

Şimdi  asıl işi yapan ,yani bu yapının bir Entity Framework yani bir ORM modeli olduğunu belirtecek Context sınıfımızı oluşturmaya. Bu yapı bizim nesne tabanlı yapımız ile veri tabanının ilişkisel yapısnın arasında köprü vaziyeti görecek.

Yeni bir sınıf oluşturup adına SchoolContext diyelim ve içerisini aşağıdaki şekilde dolduralım:


    class SchoolContext : DbContext
    {
        public SchoolContext():base("name=SchoolContext")
        {

        }
        public DbSet<Students> Students { get; set; }
        public DbSet<Grade> Grades { get; set; }
    }

Sınıfımızı Entity Framework'un üst sınıfı olan DbContext sınıfından türetiyoruz. Ardından her tablo için Tablolarımızın tipinde DbSet property'leri oluşturuyoruz.


  • Modelimiz hazır. Son olarak Database ile Entity'i konuşturmak kalıyor. Bunun için projemizin kök dizininde bulunan App.config dosyasına   </entityFramework> tagının hemen altına; Connection String'imizi yazıyoruz. Benim connection Stringim SQL Server şu şekildeydi, MySQL vs. databaseler için internetten bulabilirsiniz.;





  <connectionStrings>
    <add name="SchoolContext"

    connectionString="Data Source=DESKTOP-997P62G\SQLEXPRESS;Initial Catalog=MySchoolDb;
         Integrated Security=true"
    providerName="System.Data.SqlClient"/>
  </connectionStrings>

Burada <add name kısmı bizim context sınıfının adı Data Source; DB'nin oluşturulacağı makinanın adı veya IP'si Inintial Catalog ise: oluşturulacak Veritabanının adı.


  • Şu an her şey hazır şimdi öncelikle bir kayıt nasıl eklenir ona bakalım ve Database'i oluşturacak SaveChanges() metodunu çağıralım;





        static void Main(string[] args)
        {
            PerformDBOperations();
            Console.WriteLine("Kişi Kaydedildi!");
             
            Console.ReadLine();
        }
        public static void PerformDBOperations()
              {
                 using (var ctx = new SchoolContext())
                  {
                      var stud = new Students() { StudentName = "Halil"};
                      ctx.Students.Add(stud);       
                      ctx.SaveChanges();
                  }

Yukarıda gösterildiği gibi kayıt eklenip Database oluşturulabilir.


  • Sorgu örneğine göz atacak olursak;



        static void Main(string[] args)
        {
            PerformDBOperations();
           
            Console.ReadLine();
        }

        public static void PerformDBOperations()
              {
            using (var ctx = new SchoolContext())
            {
                var student = ctx.Students
                                .Where(s => s.StudentID ==1)
                                .FirstOrDefault<Students>();
                Console.WriteLine(student.StudentName);
            }
        } 

şeklinde oluşturabilirsiniz.

Bu makalede Entity Framework'u en basit hâliyle incelemiş olduk.
Lütfen soru ve sorunlarınızı iletmekten çekinmeyiniz.

Post a Comment

0 Comments