Last active
September 22, 2018 18:57
-
-
Save mehmetalierol/d4b15041c5333ca409ac5a85ef5d92dd to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using Company.Application.Common.Data; | |
using System; | |
using System.Linq; | |
namespace Company.Application.Common.Repository | |
{ | |
/// <summary> | |
/// Bu interface bizim için oluşturacağımız GenericRepository'nin neleri içermesi gerektiğini belirtiyor. | |
/// GenericRepository sınıfından doğrudan instance almak yerine Dependency Injection kullanarak Bu interface üzerinden instance alacağız | |
/// İsimlendirme yaparken I ile başlama bunun bir interface olduğunu bana söylüyor bu şekilde kullanım zorunlu değil ancak yaygın kullanım bu şekilde. | |
/// İstersek bu interface in adına isimlendirme kurallarına uymak kaydı ile istediğimizi yazabiliriz. | |
/// İsimden sonra gelen <T> ibaresi bu interface in generic olduğunu gösterir. Bu interface i kullanacaksak where ile sınırlandırılmış olan T parametresini yani | |
/// EntityBase den kalıtım almış bir sınıfı buraya vermemiz gerekiyor. | |
/// </summary> | |
/// <typeparam name="T">where diyerek T nin EntityBase den türemiş bir sınıf olması gerektiği kısıtını koda ekliyoruz</typeparam> | |
public interface IGenericRepository<T> where T : class | |
{ | |
/// <summary> | |
/// Geriye içinde linq ile arama yapılabilecek bir queryable döndürür | |
/// </summary> | |
/// <returns></returns> | |
IQueryable<T> GetAll(); | |
/// <summary> | |
/// Bu method kendisine verilecek Guid valueType'ına sahip Id değişkeni ile sorgulama yapacak ve geriye interface e verilen tipte dönüş yapacak | |
/// </summary> | |
/// <param name="Id">Aranan kaydın Guid tipinde Id bilgisi</param> | |
/// <returns></returns> | |
T Find(Guid Id); | |
/// <summary> | |
/// Kendisine gönderilen tipteki sınıfı veritabanına eklemek için kullanılacak | |
/// </summary> | |
/// <param name="entity">Hangi sınıf eklenecek ise onun bir örneği verilmeli</param> | |
T Add(T entity); | |
/// <summary> | |
/// Kendisine gönderilen tipteki sınıfı veritabanında güncellemek için kullanılacak | |
/// </summary> | |
/// <param name="entityToUpdate">Güncellenmesi istenen sınıfın bir örneği gönderilmeli</param> | |
T Update(T entityToUpdate); | |
/// <summary> | |
/// Kendisine gelen Guid ValueType'ına sahip Id bilgisi ile veritabanında silme işlemi yapacak | |
/// </summary> | |
/// <param name="Id">Silinmesi istenen kaydın Guid tipinde Id bilgisi</param> | |
void Delete(Guid Id); | |
/// <summary> | |
/// Kendisine gelen sınıf ile veritabanında silme işlemi yapacak | |
/// </summary> | |
/// <param name="entityToDelete">Silinmesi istenen kayda ait sınıfın örneği</param> | |
void Delete(T entityToDelete); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment