Kolay Multi Tenant Uygulama Yönetimi
Döküman Görüntüle »
·
Bug Bildir
·
Geliştirme Önerisi Yap
- Proje Hakkında
- Gereklilikler
- Kurulum
- Kullanım
- Data Isolation
- Soft Delete
- Audit Log
- Yol Haritası
- Lisans
- İletişim
Bu kütüphane Ef core eklentisi olarak, multi tenant sistemlerin ortak ihtiyaçları için geliştirilmektedir.Data isolation, soft delete pattern ve auditlog işlemleri için çözüm sunar. Açık kaynaktır. İstediğiniz şekilde kendi sisteminiz içerisinde geliştirmeye devam edebilir. Kodlar üzerinde değişiklik yapıp kullanabilirsiniz.
-- Entity Framework Core
- Paketi nuget üzerinden yüklemek için
dotnet add package DRN.EntityFramework.ExtendedMultiTenancy
Paketi yükledikten sonra, DbContext'inizi "MultiTenancyDbContext" classından base alacak şekilde yapılandırın. class 2 adet generic parametre alır. TenantId parametresi, sisteminizdeki kiracıların primary key tipidir. int, long veya Guid olması uygun olacaktır. UserId parametresi, kullanıcı hesaplarının primary key tipidir yine int, long veya Guid olması uygun olacaktır. isAdminContext parametresini true yaparak, sistemdeki bütün özellikleri devre dışı bırakabilir, anlık olarak normal dbcontext gibi kullanabilirsiniz. Sistem size entity classlarınızda kullanmak üzere interfaceler sağlayacaktır. Entitylerinizi bu classlardan base alarak, interfacede geçen özelliği otomatize edilmiş şekilde kullanmaya başlayabilirsiniz.
NOT : Her seferinde interfacelerdeki generic parametreleri doldurmak zorunda değilsiniz. Parametre tiplerini belirledikten sonra sistem interfacelerinden belirlenmiş parametrelerle base alan interfaceler üretip kendi sisteminiz için oluşturabilirsiniz.
Multi tenant özelliğe sahip olan entity classlarınızı ITenant interfaceinden base aldırmanız yeterlidir. Bundan sonra database add ve update işlemlerinde otomatik olarak nesne, işlemi o anda yapan tenanta ait olacak ve sorgularda sadece o tenanta görünecektir.
Soft Delete özelliğe sahip olan entity classlarınızı ISoftDelete interfaceinden base aldırmanız yeterlidir. Bundan sonra, silme işlemlerinde otomatik olarak silinen nesnenin isdeleted özelliği true olacak ve çekilen sorgularda gözükmeyecektir. Silme işlemini yapan userid ve işlem tarihinide tutar. Eğer silinen nesneye erişmek isterseniz çekilen sorguda, .IgnoreQueryFilters() fonksiyonunu kullanabilirsiniz.
Dikkat !! : IgnoreQueryFilters fonksiyonunu kullanmak multi tenant filtrelemesinide kaldıracaktır. "(TenantId == CurrentTenantId)" benzeri eklemeyi yapmayı unutmayın.
Audit log tutmak istediğiniz entity classlarınızı IAuditLog interfaceinden base aldırmanız yeterlidir. Ekleme tarihi, Ekleyen userId, Güncelleme tarihi, Güncelleyen userId otomatik olarak tutulacaktır.
Bilinen Hatalar Önerilen geliştirmeler ve bilinen hatalar.
MIT Lisansı altında dağıtılmaktadır. Daha fazla bilgi için "LİSANS" bölümüne bakın.
Direncan Çatalkaya - direncan.catalkaya@gmail.com
Project Link: https://github.com/direncancatalkaya/ExtendedMultiTenancy