En iyi yanıtlayıcılar
Tablo kısıtlarıyla ilgili bir problem!

Soru
-
tabloların ilişkileri yukarıdaki gibidir.yani 1 numaralı user'in arkdaşları 2,3,8 ve 7 numaralı userlar (2 ve 3 numaralı arkadaşları okul arkadaşları, 8 numaralı olan ev arkadaşı, 9 ise hem iş hemde ev arkadaşı)2 numaralı user'in arkadaşı 1 numaralı user(ev arkadaşı)Benim problemim şu;User tablosundan herhangi bir user silindiğinde friend tablosundan o user_id ilişkili tüm kayıtların silinmesi(delete rule cascade seçeneği aktif durumda)ve silinen user herhangibirinin arkadaşı ise friend_user_id ile ilişkili tüm kayıtların silinmesi gerekli yani 2 numaralı user silindiğindefriend tablosundan 1. kayıt silinmeli. (delete rule cascade seçeneği aktif durumda)
bu kısıtları oluşturduğumda aşağıdaki hatayı alıyorum yardımcı olursanız sevinirim.'User' table saved successfully'Friend' table- Unable to create relationship 'FK_Friend_User2'.Introducing FOREIGN KEY constraint 'FK_Friend_User2' on table 'Friend' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.Could not create constraint. See previous errors.
- Düzenleyen Erhan Karaarslan 9 Kasım 2011 Çarşamba 21:08
Yanıtlar
-
sql server a gelip tools menüsünden options tıklayın designers dan table and database designers tıklayın sağda çıkan seçeneklerden prevent saving changes that require table re-creation un tikini kaldırın
- Yanıt Olarak Öneren Ali Çalı 30 Kasım 2011 Çarşamba 09:33
- Yanıt Önerisini Geri Alan Ali Çalı 30 Kasım 2011 Çarşamba 09:37
- Yanıt Olarak İşaretleyen Osman Shener 4 Nisan 2012 Çarşamba 09:03
-
Merhaba,
User ve Friend tabloları arasında kurulan ilişkide Delete Role Cascade seçildiğine göre User tablosundan bir kayıt sildiğinde Friend tablosunda silinen kayıt ile ilişkili olan kayıtlarda silinecektir. Buraya kadar sorun yok. Sorun şu ki; User tablosundan sildiğimiz kayıtla ilişkili olan Friend tablosundaki bir kayıt otomatik olarak siliniyorken Friend tablosu ile ilişkili olan FriendsInLists tablosundaki bağlı kayıtlarında silinmesi gerekiyor.
Bu durumda Friend ile FriendsInLists tablosu arasında oluşturulan ilişkide de Delete Role Cascade olarak ayarlanmalı.
Kolay gelsin.
- Düzenleyen Ali Çalı 30 Kasım 2011 Çarşamba 09:50
- Yanıt Olarak İşaretleyen Osman Shener 4 Nisan 2012 Çarşamba 09:03
Tüm Yanıtlar
-
aslında cevabını kendin vermişsin ancak koda dökemedin sanırım
silinmesi gerekenleri yazdıgın gibi silersen problem kalmaz.
örneğin silinecek user ın idsini alırsın
bu user id yisorguyla
List<Friends> frn= entity.friends.where(x=> x.userId==silmekistediğinuserıd).Tolist();
foreach(Friends item in frn)
{
bu sekilde dönerek sileceğin user_id ye ait arkadaş listeni aldın ve bu user_id e denk gelen friends listeni olusturdun
burada her bir friens id icin tekrar bir liste olusturup(Friendinlist) o liste içerisinde de foreach le dönerek silme işlemini yaparsın silme işlemi içten dısa örneğin friendinlist silinir foreach ten cıkınca friends tablosundan veriler silinir ve en son user tablosundan user silinir.
yukardaki sorgu bildiğin linq - entity sorgusu bu sorguyu kullandıgın işleme göre değiştirebilirsin önemli olan sorgularda liste seklinde toplayıp foreach te dönmen
List<FriendinList> frninlst= entity.friendinlists.where(x=> x.fil_id==item.fil_id).Tolist();
foreach(FriendinList item2 in frninlst)
{
}
}
-
Yanıtınız için teşekkür ederim ama benim problemim kodla ilgili değil ben yukarıda gösterdiğim ilişkiyi kuramıyorum diyagramı kaydetmeye çalıştığımda yukarıdaki hata ile karşılaşıyorum.(sql server 2008 kullanıyorum)
- Düzenleyen Erhan Karaarslan 9 Kasım 2011 Çarşamba 22:28
-
sql server a gelip tools menüsünden options tıklayın designers dan table and database designers tıklayın sağda çıkan seçeneklerden prevent saving changes that require table re-creation un tikini kaldırın
- Yanıt Olarak Öneren Ali Çalı 30 Kasım 2011 Çarşamba 09:33
- Yanıt Önerisini Geri Alan Ali Çalı 30 Kasım 2011 Çarşamba 09:37
- Yanıt Olarak İşaretleyen Osman Shener 4 Nisan 2012 Çarşamba 09:03
-
Merhaba,
User ve Friend tabloları arasında kurulan ilişkide Delete Role Cascade seçildiğine göre User tablosundan bir kayıt sildiğinde Friend tablosunda silinen kayıt ile ilişkili olan kayıtlarda silinecektir. Buraya kadar sorun yok. Sorun şu ki; User tablosundan sildiğimiz kayıtla ilişkili olan Friend tablosundaki bir kayıt otomatik olarak siliniyorken Friend tablosu ile ilişkili olan FriendsInLists tablosundaki bağlı kayıtlarında silinmesi gerekiyor.
Bu durumda Friend ile FriendsInLists tablosu arasında oluşturulan ilişkide de Delete Role Cascade olarak ayarlanmalı.
Kolay gelsin.
- Düzenleyen Ali Çalı 30 Kasım 2011 Çarşamba 09:50
- Yanıt Olarak İşaretleyen Osman Shener 4 Nisan 2012 Çarşamba 09:03