Arama butonu
Bu konudaki kullanıcılar: 2 misafir, 1 mobil kullanıcı
5
Cevap
1794
Tıklama
0
Öne Çıkarma
Asp net core 2 farklı dbcontexte ait tablolar arası relationship
O
5 yıl
Yarbay
Konu Sahibi

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

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil





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

M
5 yıl
Yarbay

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


Bu mesaja 1 cevap geldi.
O
5 yıl
Yarbay
Konu Sahibi

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 >

< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @mahoni_38
M
5 yıl
Yarbay

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.


Bu mesaja 1 cevap geldi.
O
5 yıl
Yarbay
Konu Sahibi

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 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @mahoni_38
M
5 yıl
Yarbay

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.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.