Merhaba arkadaşlar. Çoklu veritabanı kullanımı ile alakalı bir web api geliştiriyorum. Migration kısmını hallettim fakat Controller kısmında takıldım kaldım. Core'da daha yeniyim ve nasıl hareket edeceğimi bilemedim. Kodlarım github'ta var. Linkini paylaşayım. Yardımcı olabilecek biri varsa sevinirim.
https://github.com/msbeden/MultiTenantCore
İyi çalışmalar.
.Net Core 6 Web Api Çoklu Veritabanı Kullanım Hatası
3
●156
- 29-10-2022, 23:23:11Merhabalar,msbeden adlı üyeden alıntı: mesajı görüntüle
Çok detaylı bilgim olmasada biraz incelediğim kadarı ile siz Controller kısmında hangi veri tabanı ile çalışacaksanız onun DbContext'ini göndermeniz lazım. Siz hepsi için ayrı Db oluşturmuşsunuz bunu Controller yada Generic Rep. oluşturup hangi tablo ile çalıştıracağınıza sizin karar vermeniz gerekir, yada bir tane tabloda üyelik gruplarını oluşturup gelen değere göre dbcontext nesnesiniz çekmeniz lazım, yada bir tane UserDbContext yapıp aynı server üzerinde işlem yapacaksanız bunun sorgusunuz SQL'e bırakıp bir tane View yada Store Procedure yazmalısınız. Buradaki amaçınızı tam olarak bilmediğim için alternatifleri yazdım - 29-10-2022, 23:39:59Burada aslında dbcontext 2 adet olacak. Her tablo için değil de ortak veritabanı ve müşteri veritabanı için dbcontext.ncinar adlı üyeden alıntı: mesajı görüntüle
Bir web app yazmak istiyorum. Diyelim ki aaa.com dan müşteriler giriş yapacak. Müşteri kontrolu SharedDbcontext'in bağlı olduğu ana veritabanından yapılacak. Müşterinin kendine ait veritabanının bağlantı cümlesini SharedDb den okuyup kendine ait ürünlerini MultipleDbContext kullanarak görecek.
Servis kısmında hangi model, controller hangi dbcontext i kullanacağını belirttim. Ürün listelemeyi yapıyor MultipleDbContext ile. Ancak SharedDbcontext'i eziyor galiba. Çünkü MultipleDbContext in kodlarını kapattığımda Kullanıcı listeleme de açılıyor. - 30-10-2022, 00:19:10context sinifini servis olarak register ettiyseniz, controller da yapilandirici dan cagirip erisebilirsiniz. default context de zaten bir class i isaret ediyor ama diger db lere isaret eden bir context class i yok. foreach var ama foreach bittiginde o class lara erisimde bitiyor. yapmaniz gereken her ne kadar db varsa ona gore dbcontext1, dbcontext2 diye class acip json da olan connection stringi belirtmek. yoksa erisemezsiniz. eger bu default haricindeki db ler birbirinin kopyasi ise sadece connection stringi degistirip context classını yeniden olusturup erisim saglayabilirsin ama bunu hic denemedim dedigim sekilde yapmak saglikli olmayabilir. her sey dinamik olsun derseniz kendinize iş cikarmis olursunuz. hic geregi yok ne kadar db varsa o kadar context acin.