Şimdi Ara

Asp net core 2 farklı dbcontexte ait tablolar arası relationship

Bu Konudaki Kullanıcılar:
2 Misafir - 2 Masaüstü
5 sn
7
Cevap
0
Favori
1.490
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhabalar migration ile alakalı bir problemim var.Projemde aspnet core identity kullanıyorum.Yapmak istediğim şey user ile post arasında bire çok ilişki kurmak.Problem burada çıkıyor.
    İki tane context oldugundan çıkarıyor galiba ama bilmiyorum.
    Post entity : https://prnt.sc/ug1rja Yeni eklenenler parentid,user,userid
    User entity : https://prnt.sc/ug1t0u yeni eklenen List<Post> Posts
    Şimdi olaya geleyim benim contextlerim 2 tane ama database tek. Identitydbcontext ile normal database tabloların contexti farklı yani databasedeki normal tablolar ile identyi oluşturan contextler farklı 
    Şöyle DBcontext : https://prnt.sc/ug1tbz
    IdentityDbContext : https://prnt.sc/ug1thh
    DB tablolarım şu şekilde : https://prnt.sc/ug1xa2
    Ben şimdi dotnet ef migrations add UserPostUpdate --context MySite2Context --project "DataAccess" --startup-project "WebAPI" yazarak migration eklediğimde migrationu açıp bakıyorum ne oluşturmuş diye User diye tablo oluşturuyor kendisi buyrun oluşan migration : https://prnt.sc/ug1yj8 .Oluşturmaması gerek AspNetUsers tablosunu kullanmasını istiyorum ben. Bu şekil migration ekliyor Sonra ben bu migrationu şu hale getiriyorum elle https://prnt.sc/ug1yyk create table user kısmını tamamen siliyorum ve bu en altdaki yerde principaltable da user yazanı AspNetUsers yapıyorum databasedeki tablo ismiyle uyumlu olsun diye en üstdeki name: "FK_Posts_User_UserId",buna dokunmuyorum sonra bu migrationu update ettikten sonra login olamıyorum bozuluyor login olma olayı registerda çalışmıyor.apiye bağlanırken 500 hata kodu veriyor bunları yapmadan önce ama sorunsuz çalışıyor.

    Bu migration olayları bozuyor ama bu user post olayınıda yapmam gerek. Ben bu işi nasıl yaparım ? Şimdi ben bunu tek contextde birleştirmeye kalktım bu sefer efentityrepositorybase kısmı bozuluyor çünkü identitydbcontexti inherit etmem gerek buda problem çıkarıyor.Bu efrepository =https://prnt.sc/ugpanx buda ef repositoryden inherit almış örnek kod :https://prnt.sc/ugpdc6

    Güncelleme: İki farkli contexte ait tablolar arasi relationship olmuyormus benim bunu tek bir contexte tasimam lazim ve bu context dbcontextden degil idenditycontextden inherit edilmeli ve entity repository basede buna uygun olmali ben nasıl yapabilirim bunu



    < Bu mesaj bu kişi tarafından değiştirildi ORGANIKHOSAF -- 14 Eylül 2020; 1:50:57 >



  • Aslinda 2 ayri context degil. Db context Identity contextden miras alip tek bir context sahip olmalisin.

  • mahoni_38 kullanıcısına yanıt

    Dediğiniz gibi yaparak çözmüştüm sorunu abi ama repository base ve diğer kısmı değiştirmek zorunda kaldım sorunsuz çalışıyor ama doğru bir kullanım mı bilemedim.



    Öncesi şöyle idi


    Repository base : https://prnt.sc/ugpanx?utm_campaign=DonanimHaber&utm_medium=referral&utm_source=DonanimHaber


    EfRepository base : https://prnt.sc/ugpdc6?utm_campaign=DonanimHaber&utm_medium=referral&utm_source=DonanimHaber



    IdentityDbContextden türettiğimde yapıyı değiştirmek zorunda kaldım hata alıyordum şu tarza çevirdim.



    Repository base : https://prnt.sc/v2ahmz


    EfRepository bae : https://prnt.sc/v2ai0o



    Bu tarza çevirmekte baya zorlanmıştım. Kaynak bulamadıydım bu adamın yaptığı gibi yapınca identitydbcontext ile oluşturduğum şeyde repository kullanabildim.


    https://www.codewithmukesh.com/blog/repository-pattern-in-aspnet-core/ 




    < Bu mesaj bu kişi tarafından değiştirildi ORGANIKHOSAF -- 19 Ekim 2020; 15:7:13 >
  • quote:

    Orijinalden alıntı: ORGANIKHOSAF

    Dediğiniz gibi yaparak çözmüştüm sorunu abi ama repository base ve diğer kısmı değiştirmek zorunda kaldım sorunsuz çalışıyor ama doğru bir kullanım mı bilemedim.



    Öncesi şöyle idi


    Repository base : https://prnt.sc/ugpanx?utm_campaign=DonanimHaber&utm_medium=referral&utm_source=DonanimHaber


    EfRepository base : https://prnt.sc/ugpdc6?utm_campaign=DonanimHaber&utm_medium=referral&utm_source=DonanimHaber



    IdentityDbContextden türettiğimde yapıyı değiştirmek zorunda kaldım hata alıyordum şu tarza çevirdim.



    Repository base : https://prnt.sc/v2ahmz


    EfRepository bae : https://prnt.sc/v2ai0o



    Bu tarza çevirmekte baya zorlanmıştım. Kaynak bulamadıydım bu adamın yaptığı gibi yapınca identitydbcontext ile oluşturduğum şeyde repository kullanabildim.


    https://www.codewithmukesh.com/blog/repository-pattern-in-aspnet-core/ 

    Niye mecbur kalasin anlamadim. Identity DbContext den turemis bir nesne dolayisla ikisi de ayni ozellikleri iceriyor.


    su amacsiz bir kod


    https://prnt.sc/v2ai0o



    MySite2Context ile siki sikiya bagli. Oysa ilk orneklerdeki gibi herhangi bir dbContext gelmesi ve onu entity type ile Context.Set<x> ile cagirman mumkun.


    Ayrica her add isleminde bir dbContext uretir ve dispose edersen context icindeki baglari da kaybedersin. 1 request icin 1 DbContext nesnesi yeterli. Depedeny Injection yapmanin bir diger mantigi nesnelerin yasam dongulerini belirleyebilmek.


    Hep diyorum sen aspnet boilerplate ac oku. O nasil generic reposity kurmis bak.

  • mahoni_38 kullanıcısına yanıt
    Hata almıştım çözememiştim abi aşağıda aldığım hatayı gösterdim tekrardan eski haline çevirdim.

    Aspnet boilerplate baya iyi aslında siz ilk dediğinizde biraz bakınmıştım ama kendim yazmayı öğrenmeden hazır şeylere geçmeyeyim diye düşünmüştüm.

    Şimdi şu yapı ile alakalı aldığım hatayı göstereyim.


    Önce yapının sslerini veriyim

    Bu benim contextim : https://prnt.sc/v2h3q6


    EfRepositoryBase: https://prnt.sc/v2h6w7


    Buda efden türettiğim hata aldığım yer : https://prnt.sc/v2h78y


    Bu ise hatalarin resmi
    https://prnt.sc/v2h8ti





    bunları çözemediğim için yapıyı değiştirmiştim <User,Role,string> verdiğimde hata buna dönüyor https://prnt.sc/v2ha4q



    < Bu mesaj bu kişi tarafından değiştirildi ORGANIKHOSAF -- 20 Ekim 2020; 18:9:31 >
  • quote:

    Orijinalden alıntı: ORGANIKHOSAF

    Hata almıştım çözememiştim abi aşağıda aldığım hatayı gösterdim tekrardan eski haline çevirdim.

    Aspnet boilerplate baya iyi aslında siz ilk dediğinizde biraz bakınmıştım ama kendim yazmayı öğrenmeden hazır şeylere geçmeyeyim diye düşünmüştüm.

    Şimdi şu yapı ile alakalı aldığım hatayı göstereyim.


    Önce yapının sslerini veriyim

    Bu benim contextim : https://prnt.sc/v2h3q6


    EfRepositoryBase: https://prnt.sc/v2h6w7


    Buda efden türettiğim hata aldığım yer : https://prnt.sc/v2h78y


    Bu ise hatalarin resmi
    https://prnt.sc/v2h8ti





    bunları çözemediğim için yapıyı değiştirmiştim <User,Role,string> verdiğimde hata buna dönüyor https://prnt.sc/v2ha4q

    Aslında tam tersi. Kullanmadığın, ihtiyacını hissetmediğin ve sorunun çözmeyen kodu sadece "best practise" diye çalışmak sana pek bir şey katmaz. Önce kullan gör sonra daha iyisini elbette kendin implemente edebilirsin.

  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.