Entity Frameworkte many to many ilişkisinde ekleme silme güncelleme işlemleri basit olarak nasıl yapılır?

EF de normal ekleme silme güncelleme işlemleri gayet güzel ve kolay. Ama iş ilişkili tablolara gelince işler biraz karışıyor. Örneğin "sepet", "urun" ve arada "sepeturun" tablolarımızın olduğu bir veri tabanında DatabaseFirst yöntemiyle işlem yapmak istiyorum. Bu gibi bir durumda Ekleme silme özelliklede güncelleme işlemlerini kolay bir yoldan nasıl yapabilirim? sizler ne gibi yöntemler kullanıyorsunuz?

soruldu: 09 Ara '13, 01:03

emrekacan's gravatar image

emrekacan
813304450
cevap kabul oranı: 9%

1

Kolay yol derken tam olarak neyi kastediyorsunuz? Yani siz nasıl yapıyorsunuz ve bizden ne bekliyorsunuz? Bunu tam olarak yazarsanız daha net cevap alabilirsiniz sanırım.

(09 Ara '13, 01:15) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

Kolay yol demeyeyimde nasıl yapıdığını sorayım. Benim aklıma önce sepeti oluşturup SaveChanges() demek daha sonrada o sepete ürünleri ekleyip tekrar SaveChange() demek. Yada sepet oluşturup sepetin urunsepet koleksiyonuna ekleyip SaveChanges() yapmak. böylede ekliyor. Ama asıl problem güncellemede. Mesele bi sepeti veritabanından çektik diyelim. Ona bağlı ürünlerle beraber geliyor. Ben o sepetin ürünlerinde değişiklik yapmak istediğimde bir ikisini silip bi kaç tanede eklemek istediğimde nasıl bir yol izlemem gerekiyor? Bu nasıl yapılır?

(09 Ara '13, 01:22) emrekacan emrekacan's gravatar image

Ekleme:

Sepet sepet = new Sepet { Name = "Sepet 1" };

sepet.Urun.Add(new Urun { Name = "Urun 1" });
sepet.Urun.Add(new Urun { Name = "Urun 2" });
sepet.Urun.Add(new Urun { Name = "Urun 3" });

db.Sepet.Add(sepet);
db.SaveChanges();

Güncelleme/Silme:

Sepet sepet = db.Sepet.Find(sepetId);

List<Urun> silinecekUrunler = // burada silmek için seçtiğiniz ürünleri aldınız diyelim
List<Urun> eklenecekUrunler = // burada eklemek için seçtiğiniz ürünleri aldınız diyelim

silinecekUrunler.ForEach(x => sepet.Urunler.Remove(x));
eklenecekUrunler.ForEach(x => sepet.Urunler.Add(x));

db.SaveCahnges();
permanent link

cevaplandı: 09 Ara '13, 01:30

AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

AliRıza Adıyahşi ♦
7.9k146288
cevap kabul oranı: 44%

Cevap için teşekkür ederim. Peki silinecekUrunler ve eklenecekUrunler yerine elimizde sepetin son halindeki ürünler olsaydı nasıl bir yol izlememiz gerekirdi?

(12 Ara '13, 09:00) emrekacan emrekacan's gravatar image
1

sepet.Urunler.Clear();

(12 Ara '13, 11:57) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image
1

sepet.Urunler.Clear(); sonUrunler.ForEach(x=>sepet.Urunler.Add(x));

Teşekkür ederim.

(12 Ara '13, 15:43) emrekacan emrekacan's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×18

Soruldu: 09 Ara '13, 01:03

Görüntüleme: 656 kez

Son güncelleme: 12 Ara '13, 15:43

powered by BitNami OSQA