🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / C# RMOS / Generic Repository Pattern dynamic object T class entity framework update delete insert kullanımı

1-) C# RMOS - Generic Repository Pattern dynamic object T class entity framework update delete insert kullanımı

 

kaynak : https://dotnettutorials.net/lesson/generic-repository-pattern-csharp-mvc/

 

açıklama : MSSQL de 10 tane tablon oldugunu düşün. entity ile her birine ekle sil güncelle metotları yazmak yerine bu metodu bir kere yazıyorsun. hepsinde T ile kullanabiliyorsun

 

1- IGenelController.cs

 

 

using System.Collections.Generic;

 

namespace Proje.Controller

{

    public interface IGenelController<T> where T : class

    {

        IEnumerable<T> GetAll();

        T GetById(object id);

        void Insert(T obj);

        void Update(T obj);

        void Delete(object id);

        void Save();

    }

}

 

 

2- GenelController.cs

 

 

using Proje.Entities;

using System.Collections.Generic;

using System.Data.Entity;

using System.Linq;

namespace Proje.Controller

{

    public class GenelController<T> : IGenelController<T> where T : class

    {

        private ProjeContext _context = null;

        private DbSet<T> table = null;

 

        public GenelController()

        {

            this._context = new ProjeContext();

            table = _context.Set<T>();

        }

            

        public GenelController(ProjeContext _context)

        {

            this._context = _context;

            table = _context.Set<T>();

        }

 

        public IEnumerable<T> GetAll()

        {

            return table.ToList();

        }

 

        public T GetById(object id)

        {

            return table.Find(id);

        }

 

        public void Insert(T obj)

        {

            table.Add(obj);

            _context.SaveChanges();

        }

 

        public void Update(T obj)

        {

            table.Attach(obj);

            _context.Entry(obj).State = EntityState.Modified;

            _context.SaveChanges();

 

        }

 

        public void Delete(object id)

        {

            T existing = table.Find(id);

            table.Remove(existing);

            _context.SaveChanges();

 

        }

 

        public void Save()

        {

            _context.SaveChanges();

        }

    }

}

 

 

 

3- Sube.cs vs ProjeContext

 

 

using System.ComponentModel.DataAnnotations;

using System.ComponentModel.DataAnnotations.Schema;

 

namespace Proje.Entities

{

    [Table("Sube")]

    public partial class Sube

    {

        [Key]

        public int id { get; set; }

 

        [StringLength(200)]

        public string ad { get; set; }

 }

}

 

using System.Data.Entity;

 

namespace Proje.Entities

{

    public partial class ProjeContext : DbContext

    {

        public ProjeContext()

            : base("name=ProjeContext")

        {

        }

 

        public virtual DbSet<Sube> Sube { get; set; }

       

        protected override void OnModelCreating(DbModelBuilder modelBuilder)

        {

        }

    }

}

 

 

4- KULLANIMI

 

 

public void deneme()

        {

            IGenelController<Sube> repository = new GenelController<Sube>();

            Sube sube = new Sube();

            sube.id = 0;

            sube.ad = "TEST 44 51";

            repository.Insert(sube);

            //repository.Update(sube);

            //repository.Delete(3);

 

        }

 

 

 2023 Şubat 08 Çarşamba
 275