-
Notifications
You must be signed in to change notification settings - Fork 0
/
ICoreSession.cs
25 lines (24 loc) · 1.64 KB
/
ICoreSession.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using PayCoreFinalWork.Core.Entity.Concrete;
using PayCoreFinalWork.Core.Enums;
using System.Linq.Expressions;
namespace PayCoreFinalWork.Core.DataAccess.Abstract
{
// ISession nesnesi yerine kullanılacak olan base interface.
// Buradan kalıtım alacak olan diğer interface'lerin sahip olacağı ortak özellikleri barındırır.
// CoreSession sınıfı bu ortak özelliklerin ortak işlevlerini ve çalışma şekillerini bu interface'i implemente ederek belirler.
// Generic operatörünün içerisinde belirlenecek tip ise yalnızca CoreEntity sınıfından kalıtım almış bir sınıf olmak zorundadır.
// Uygun tüm metodlar asenkron olarak yer almıştır.
public interface ICoreSession<TEntity> where TEntity : CoreEntity
{
Task<List<TEntity>> GetList(Expression<Func<TEntity, bool>>? expression = null); // Belli bir filtreye göre veya tüm kayıtları listeleme.
Task<TEntity> Get(Expression<Func<TEntity, bool>> expression); // Belli bir filtreye göre tek kayıt arama.
Task Add(TEntity entity); // Yeni bir kayıt ekleme.
Task Update(TEntity entity); // Mevcut bir kaydı güncelleme.
Task Delete(TEntity entity); // Mevcut bir kaydı silme.
void BeginTransaction(); // Takipe alınacak bir işlem başlatma.
Task CommitTransaction(); // Takipe alınan işlemi işleme.
Task RollbackTransaction(); // Takipe alınan işlemi geriye sarma.
void CloseTransaction(); // Takip işlemini sona erdirme.
Task<ApiResponse> DbOperation(Operation operation, TEntity entity, TEntity? entityFromBody = null); // Bir işlemi takip ettirerek yaptırma.
}
}