c# Web

Öğrencilere Ait Performans ve Uygulama Notlarının Girildiği Core Mvc Projesi Tasarlama4

Bu makalede öğrenciye verilecek performans ve uygulama notlarını veritabanında saklamak için gerekli tablo tasarımlarını yapacağız. Daha sonra migration işlemi yaparak tabloların veri tabanına eklenmesini sağlayacağız. Aşağıda her bir tabloyu dikkate alarak gerekli C# sınıflarını, veri ilişkilerini ve migration komutlarını detaylı bir şekilde sunuyorum.

1. EF Core ile Tabloların Oluşturulması

Öncelikle, gerekli C# sınıflarını (model sınıflarını) oluşturmalıyız. Verdiğiniz tüm tablolara uygun sınıfları aşağıda paylaşıyorum.

2. Model Sınıflarını Oluşturun

Alan Tablosu

public class Alan
{
    public int Id { get; set; }
    public string AlanAdi { get; set; } 
}

Dal Tablosu

public class Dal
{
    public int Id { get; set; }
    public string DalAdi { get; set; } 
}

Grup Tablosu

public class Grup
{
    public int Id { get; set; }
    public string GrupAdi { get; set; } 
}

Sinif Tablosu ile İlişkilendirme

Sinif tablosunda artık sadece Alan, Dal ve Grup tablolarına dış anahtar referansları (foreign key) olacak. Bu, sınıfın bu özellikleri isteğe bağlı olarak alabilmesini sağlar.

public class Sinif
{
    public int Id { get; set; }
    public string SinifAdi { get; set; }
    public int? AlanId { get; set; } 
    public Alan Alan { get; set; }   
    public int? DalId { get; set; }   
    public Dal Dal { get; set; }      
    public int? GrupId { get; set; }  
    public Grup Grup { get; set; }    
}

Ders Tablosu

public class Ders
{
    public int Id { get; set; }
    public string DersAdi { get; set; }
}

SinifListe Tablosu

public class SinifListe
{
    public int Id { get; set; }
    public int SinifId { get; set; }
    public Sinif Sinif { get; set; }
    public string OgrenciId { get; set; }  // ÖğrenciId
    public ApplicationUser Ogrenci { get; set; }  // Öğrenci yerine ApplicationUser
    public int NobetSayisi { get; set; }
}

DersAra Tablosu

public class DersAra
{
    public int Id { get; set; }
    public int DersId { get; set; }
    public Ders Ders { get; set; }
    public int SinifId { get; set; }
    public Sinif Sinif { get; set; }
}

DersOgretmen Tablosu

public class DersOgretmen
{
    public int Id { get; set; }
    public int DersAraId { get; set; }
    public DersAra DersAra { get; set; }
    public string OgretmenId { get; set; }  // ApplicationUser sınıfındaki kullanıcı ID'si
    public ApplicationUser Ogretmen { get; set; }  // Ogretmen yerine ApplicationUser
}

Uygulama Tablosu

public class Uygulama
{
    public int Id { get; set; }
    public string UygulamaAdi { get; set; }
    public string UygulamaSorusu { get; set; }
    public string UygulamaCevabi { get; set; }
    public int DersId { get; set; }
    public Ders Ders { get; set; }
}

Performans Tablosu

public class Performans
{
    public int Id { get; set; }
    public string PerformansAdi { get; set; }
}

PerformansKriteri Tablosu

public class PerformansKriteri
{
    public int Id { get; set; }
    public int PerformansId { get; set; }
    public Performans Performans { get; set; }
    public string KriterAdi { get; set; }
    public string KriterAciklama { get; set; }
}

Sonuc Tablosu

public class Sonuc
{
    public int Id { get; set; }
    public string NotTipi { get; set; }
    public DateTime Tarih { get; set; }
    public float Notu { get; set; }
    public string Aciklama { get; set; }
    
    // Öğrenci ilişkisi: ApplicationUser ile ilişkilendirilecek
    public string OgrenciId { get; set; }  // OgrenciId yerine ApplicationUserId
    public ApplicationUser Ogrenci { get; set; }  // Ogrenci yerine ApplicationUser
    
    // Uygulama ilişkisi
    public int? UygulamaId { get; set; }
    public Uygulama Uygulama { get; set; }

    // Performans ilişkisi
    public int? PerformansId { get; set; }
    public Performans Performans { get; set; }

    public string Cevap { get; set; }

    // Öğretmen ilişkisi: ApplicationUser ile ilişkilendirilecek
    public string OgretmenId { get; set; }  // OgretmenId yerine ApplicationUserId
    public ApplicationUser Ogretmen { get; set; }  // Ogretmen yerine ApplicationUser
}

3. DbContext Sınıfı

Şimdi, tüm bu sınıfları bir DbContext içinde ilişkilendirmeniz gerekiyor:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public DbSet<Alan> Alanlar { get; set; }
    public DbSet<Dal> Dallar { get; set; }
    public DbSet<Grup> Gruplar { get; set; }
    public DbSet<Sinif> Siniflar { get; set; }
    public DbSet<Ders> Dersler { get; set; }
    public DbSet<SinifListe> SinifListeleri { get; set; }
    public DbSet<DersAra> DersAralar { get; set; }
    public DbSet<DersOgretmen> DersOgretmenler { get; set; }
    public DbSet<Uygulama> Uygulamalar { get; set; }
    public DbSet<Performans> Performanslar { get; set; }
    public DbSet<PerformansKriteri> PerformansKriterleri { get; set; }
    public DbSet<Sonuc> Sonuclar { get; set; }
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
    {
    }
    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);

        // Sabit GUID değerleri
        string adminRoleId = "b9d7cb1f-1b53-4e97-b8b9-2f0db9d29f20"; // Sabit GUID
        string teacherRoleId = "e78b3f3e-2336-4236-b66f-cd14d5b9d97e"; // Sabit GUID
        string studentRoleId = "a76c7d1d-9b59-47c9-b913-0352672e7e55"; // Sabit GUID

        builder.Entity<IdentityRole>().HasData(
            new IdentityRole { Id = adminRoleId, Name = "Admin", NormalizedName = "ADMIN" },
            new IdentityRole { Id = teacherRoleId, Name = "Teacher", NormalizedName = "TEACHER" },
            new IdentityRole { Id = studentRoleId, Name = "Student", NormalizedName = "STUDENT" }
        );

        // Öğrenci (ApplicationUser) ilişkisi
        builder.Entity<SinifListe>()
            .HasOne(sl => sl.Ogrenci)  // Ogrenci ilişkisi
            .WithMany()  // Many-to-one ilişki
            .HasForeignKey(sl => sl.OgrenciId)
            .OnDelete(DeleteBehavior.Cascade);

        builder.Entity<Sonuc>()
        .HasOne(s => s.Ogrenci)  // Öğrenci ilişkisi
        .WithMany()  // Many-to-one ilişki
        .HasForeignKey(s => s.OgrenciId);

        builder.Entity<Sonuc>()
            .HasOne(s => s.Ogretmen)  // Öğretmen ilişkisi
            .WithMany()  // Many-to-one ilişki
            .HasForeignKey(s => s.OgretmenId);

        builder.Entity<DersOgretmen>()
            .HasOne(s => s.Ogretmen)  // Öğretmen ile ilişki
            .WithMany(u => u.DersOgretmenler)  // Bir Ogretmen birden fazla DersOgretmen'e sahip olabilir
            .HasForeignKey(s => s.OgretmenId)  // DersOgretmen'deki OgretmenId, ApplicationUser ile ilişkilendirilecek
            .OnDelete(DeleteBehavior.Cascade);  // Öğretmen silindiğinde DersOgretmen de silinsin

    }
}

4. Migration Yapma

Şimdi EF Core kullanarak migration işlemini yapabiliriz. Aşağıdaki adımları takip edin:

Terminal veya Package Manager Console'u açın.

Aşağıdaki komutu yazın:

dotnet ef migrations add InitialCreateTables

Bu komut, veritabanı için gerekli tüm tablolara ve ilişkilere dayalı olarak bir migration oluşturur.

Veritabanını güncellemek için şu komutu kullanabilirsiniz:

dotnet ef database update

Bu, veritabanınızı oluşturur ve tablolara uygun şekilde günceller.

Sonuç:

Tüm tabloların ve ilişkilerinizi başarılı bir şekilde EF Core kullanarak oluşturmuş olduk. Şimdi veritabanınızda tabloları oluşturabilirsiniz ve ardından uygulamanızda bu modellere göre işlemleri gerçekleştirebilirsiniz.


İlgili Makaleler
Web Tabanlı Uygulama Geliştirme Dersi İkinci Dönem İkinci Yazılı Çalışma Soruları
2020 TYT Matematik Ortakatlı Kuralıyla İlgili Sorunun Çözümünü c# Diliyle Web Form Sayfasında Kodlama
Core Mvc Projesinde SqlServer Kullanarak Üye Takibi Yapan Web Projesini Tasarlama1
Web Tabanlı Uygulama Geliştirme Dersi İkinci Dönem Birinci Yazılı Çalışma Soruları
Visual Studio 2022 Programında Asp.Net Web Application Şablonu Görünmüyor Hatasını Düzeltme
Core Mvc Projesinde Tuple Nesneleri Post Etme ve Yakalama İşlemleri
Seri Port Yardımıyla Arduino Devresine Bağlanıp Ledleri Asp.Net Web Uygulamasından Yakıp Söndürme
Sitenin Alexa Dünya Sıralamasını Kodlarla Öğrenme
Personele Ait Boy ve Kilo Bilgilerine Göre İdeal Kiloyu Bulan Uygulamayı Asp.Net İle Yapınız
Core Mvc Projesinde SqlServer Kullanarak Üye Takibi Yapan Web Projesini Tasarlama4
Bir Otobüs Firmasına Ait Bilet Satış İşlemlerini Class(Sınıf) Tanımlayarak Yapan c# Form Uygulaması
Asp.Net Uygulamasında Manual Olarak JSON Oluşturma
Asp.Net Uygulamalarında Modal PopUp Oluşturma
Web Uygulamalarında SqLite Kullanımı
Asp.Net Uygulamalarında DataList (Veri Listeleme) Kontrolü
Core Mvc Projesinde SqlServer Kullanarak Üye Takibi Yapan Web Projesini Tasarlama2
C# Uygulamasında Miladi Takvimi Hicri Takvime, Hicri Takvimi Miladi Takvime Dönüştürme
2022 TYT Matematik Onbirinci Sorunun Çözümünü c# Diliyle Web Form Sayfasında Kodlama
Core Mvc Projesinde SqlServer Kullanarak Üye Takibi Yapan Web Projesini Tasarlama3
RadioButton ile Cinsiyet Bilgisini Alan Asp.Net c# Uygulaması

Yorum Ekle
   
Kötü İyi