folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder .Net Core Web Api Çoklu Veritabanı



.Net Core Web Api Çoklu Veritabanı

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsayisciAsayisci
    Asayisci
    Asayisci's avatar
    Kayıt Tarihi: 14/Eylül/2009
    Erkek

    Merhaba arkadaşlar yine bir başka soru ve sorunla sizlerleyim :)

    böyle böyle .net core'u öğrenicez valla.

    izlediğim ve incelediğim örneklerin tamamında 1 adet veritabanı var ve bu veritabanına yönelik CRUD işlemler yapılıyor.

    geliştirmekte olduğum panelde sadece sorgu yapıyor olacağım. fakat birden fazla veritabanı olacak.

    ancak veritabanları birbirlerinin aynısı. yani aynı tablo ve colon yapısına sahip. sadece farklı şubelere ait.

    yapmakta olduğumuz panelde bu veritabanlarının tamamında sorgu yapmak istiyorum. 

    hatta mümkünse veritabanları runtime olarak eklenebilsin yani yeni şubeler eklendiğinde ki yeni veritabanı eklenmesi anlamına geliyor bu, backend tarafında tekrar derleme yapmaya gerek kalmasın,

    belki veritabanlarının bilgisinin tutulduğu ayrı bi tablo da oluşturulabilir ve connectionstring ler burada tutulabilir.

    fakat ben sorgu kısmındayım, bunu nasıl halledeceğim. şuana kadar sorguların tamamını linq de yazdım. 
    sql query string kullanmak istemiyorum.

    fikirleriniz için şimdiden teşekkür ederim.

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    camarade
    ontedi
    ontedi's avatar
    Kayıt Tarihi: 04/Eylül/2005
    Erkek

    Mesela şöyle mi diyorsun

    1.2.3.98 ip üzerinde tabloA mevcut

    1.2.3.99 ip üzerinde yine tabloA mevcut diyelim.

    senin yapman gereken connectionstringi değiştirmek olacaktır.

    ef.database.connection  vs.. gibi bir kod şeklinde bağlantıyı set edip alabilmektesin. Kafadan yazdım kodu ama benzerdir.


    Matematikçi ve Yazılımcı. http://www.ontedi.com ve http://www.cizgi.site Siteme beklerim herkesi.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsayisciAsayisci
    Asayisci
    Asayisci's avatar
    Kayıt Tarihi: 14/Eylül/2009
    Erkek

    dostum şöyle düşün sunucu tek

    1.2.3.98 IP li sunucuda 

    XXX_0101 database
    XXX_0602 database
    XXX_3402 database lerimiz mevcut (her biri bir bayiye ait veritabanları)

    tablolar tahmin edeceğiniz üzere aynı

    atıyorum database lerin tamamında dbo.customers tablosu var.

    ben tek sorguda runtime olarak bu üc databaseden de sorgu yapıp list haline getirip 

    .net core da return etmem gerekiyor.

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    trooper
    trooper's avatar
    Kayıt Tarihi: 11/Kasım/2007
    Erkek
    Asayisci bunu yazdı

    dostum şöyle düşün sunucu tek

    1.2.3.98 IP li sunucuda 

    XXX_0101 database
    XXX_0602 database
    XXX_3402 database lerimiz mevcut (her biri bir bayiye ait veritabanları)

    tablolar tahmin edeceğiniz üzere aynı

    atıyorum database lerin tamamında dbo.customers tablosu var.

    ben tek sorguda runtime olarak bu üc databaseden de sorgu yapıp list haline getirip 

    .net core da return etmem gerekiyor.

    Niye farklı db ? Özel bir sebebi var mı ?


    ZzZzZzZ...!
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsayisciAsayisci
    Asayisci
    Asayisci's avatar
    Kayıt Tarihi: 14/Eylül/2009
    Erkek
    trooper bunu yazdı
    Asayisci bunu yazdı

    dostum şöyle düşün sunucu tek

    1.2.3.98 IP li sunucuda 

    XXX_0101 database
    XXX_0602 database
    XXX_3402 database lerimiz mevcut (her biri bir bayiye ait veritabanları)

    tablolar tahmin edeceğiniz üzere aynı

    atıyorum database lerin tamamında dbo.customers tablosu var.

    ben tek sorguda runtime olarak bu üc databaseden de sorgu yapıp list haline getirip 

    .net core da return etmem gerekiyor.

    Niye farklı db ? Özel bir sebebi var mı ?

    bu projeyi farklı firmalar da kullanıyor tekil olarak. 
    eğer tüm dataları tek veritabanında toplayacak olsaydım hem komple projeyi elden geçirecektim (her bir tabloya bayiID vs)

    hemde iki farklı versiyon olacağı için ileriki güncellemelerde 2 defa kod derlemesi yapmak zorunda kalacaktım.

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    trooper
    trooper's avatar
    Kayıt Tarihi: 11/Kasım/2007
    Erkek
    Asayisci bunu yazdı
    trooper bunu yazdı
    Asayisci bunu yazdı

    dostum şöyle düşün sunucu tek

    1.2.3.98 IP li sunucuda 

    XXX_0101 database
    XXX_0602 database
    XXX_3402 database lerimiz mevcut (her biri bir bayiye ait veritabanları)

    tablolar tahmin edeceğiniz üzere aynı

    atıyorum database lerin tamamında dbo.customers tablosu var.

    ben tek sorguda runtime olarak bu üc databaseden de sorgu yapıp list haline getirip 

    .net core da return etmem gerekiyor.

    Niye farklı db ? Özel bir sebebi var mı ?

    bu projeyi farklı firmalar da kullanıyor tekil olarak. 
    eğer tüm dataları tek veritabanında toplayacak olsaydım hem komple projeyi elden geçirecektim (her bir tabloya bayiID vs)

    hemde iki farklı versiyon olacağı için ileriki güncellemelerde 2 defa kod derlemesi yapmak zorunda kalacaktım.

    Bold yaptığın kısımdan kastın tekil ve şubeli kullanım için mi 2 derleme olacağını düşünüyorsun ? 

    Bu sorunu yaşamayacak 1 den fazla çözüm düşünülebilir. Bence iyice detaylıca düşünmeden ilk aklına geleni yapıyorsun. Projeyi elden geçirmeyim diye gelecekte ne sorunlar yaşayacağını planlamıyorsun ki bu sorunlarda projeyi elden geçirmekten daha uzun sorunlar karşına çıkabilir


    ZzZzZzZ...!
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tarikat Şeyhi
    HolyOne
    HolyOne's avatar
    Kayıt Tarihi: 01/Haziran/2002
    Erkek

    Hocam bunu yapabilirsin, ConnectionStore gibi bir class yapıp içine connectionstringleri array olarak dizersen, configurationa da yine connectionu string array olarak girersen ve o ConnectionStore sana .getDbContext() metoduyla random bir tanesini verirse olur yani. (Class isimlerini sallıyorum tabi istediğin adı koy)

    Fakat biraz bad practice gibi geldi bana bu. Her birinin tek db sunucusu ve ayrı web sunucusu olsa bu web sunucularda apiler olsa sen de merkezden bu api sunucularının adreslerini bağlasan ileride daha rahat edebilirsin

    Demek istediğim, sorduğun şey developer gözünden pratik gibi görünmekle birlikte enterprise architect gözüyle kabus

     

    HolyOne tarafından 02/Kas/23 01:20 tarihinde düzenlenmiştir

    Nush ile uslanmayanı etmeli tekdir, Tekdir ile uslanmayanın hakkı kötektir!
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsayisciAsayisci
    Asayisci
    Asayisci's avatar
    Kayıt Tarihi: 14/Eylül/2009
    Erkek
    HolyOne bunu yazdı

    Hocam bunu yapabilirsin, ConnectionStore gibi bir class yapıp içine connectionstringleri array olarak dizersen, configurationa da yine connectionu string array olarak girersen ve o ConnectionStore sana .getDbContext() metoduyla random bir tanesini verirse olur yani. (Class isimlerini sallıyorum tabi istediğin adı koy)

    Fakat biraz bad practice gibi geldi bana bu. Her birinin tek db sunucusu ve ayrı web sunucusu olsa bu web sunucularda apiler olsa sen de merkezden bu api sunucularının adreslerini bağlasan ileride daha rahat edebilirsin

    Demek istediğim, sorduğun şey developer gözünden pratik gibi görünmekle birlikte enterprise architect gözüyle kabus

     

    bold yaptığım kısım kulağa hoş geliyor. şimdi herbir bayi için web api olduğunu varsayalım. 
    o zaman farklı bir katman yazıp bu apilerden gelen dataları okumam gerekecek.

    o zaman api kaynaklarını string array olarak bi yerde tutacağım.

    foreach gibi bir döngü ile dönerek list oluşturacağım.

    napsam böyle mi devam etsem.

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    esinti
    esinti's avatar
    Kayıt Tarihi: 27/Ağustos/2015
    Erkek

    Hocam, senin derdinin dermanı dotnet 8 ile gelen keyed services.

    IDbConnection interface ine birden fazla sqlconnection implementasyonu yapıp istediğin db yi çağırabilirsin.

     

    https://www.gencayyildiz.com/blog/net-8-keyed-service-dependency-injection/

  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cemnet
    cemnet's avatar
    Kayıt Tarihi: 18/Eylül/2007
    Erkek

    nette multi-tenancy diye arama yapman lazım bu yapı için çok fazla örnek var. bende şuan bu tip bir yapı kullanıyorum. 

    Asp.NET Core – Multitenancy Uygulama Nasıl Oluşturulur? – Yazılım Mimarileri ve Tasarım Desenleri Üzerine (gencayyildiz.com)

     

     

  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek

    Bu işi .net sizde çözebilirsin. SQL serverde 3 DB ye union all atıp eğer sunucularda farklıysa linked server yapıp DB bazında sorguları union all ile birleştirerek yapabilirsin. Yada queryleri soyutlayıp ilgili queryleri 3 DB den sorguladıktan sonra geri kalanı ui katmanına yollarsın. Eğer bir kaç tane tablo için bu durum mevcutsa linked server + (view ya da SP) işini daha rahat görür.

     

     

    DrKill tarafından 02/Kas/23 13:22 tarihinde düzenlenmiştir

    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
Toplam Hit: 1675 Toplam Mesaj: 16
linq çoklu veritabanı .net core