Entity Framework ile ilişkili tablolardan kayıt silme

6. Ocak 2009

A relationship is being added or deleted from an AssociationSet 'FK_Table2_Table1'. With cardinality constraints, a corresponding 'Table2' must also be added or deleted.

Eski maxiasp.net sitemizde, kodlama yaparken karşılaştığınız ilginç sorunları çözmeniz durumunda bunları paylaşabildiğiniz "ben çözdüm" adlı bir bölümümüz vardı.
Bu aralar projelerimde EF kullanıyorum ve muhtemelen Frameworkta bulunan bir hatadan kaynaklanıyor olacak ilişkili tablolardan kayıt silerken yukardaki hatayı alıyorsunuz. Ben kendi modelimde 1:Many:1 ilişkili bir kaydı silmeye çalıştığımda bu hatayı aldım.
Bu sorunu çözmek için internette yaptığım araştırmalar sonucunda yapılması gereken üç farklı adım olduğunu buldum. EF framework'u projelerinde kullanacak arkadaşlar için bu üç küçük adımı anlatmanın faydalı olacağına inandığım için sizlerle paylaşmak istedim.

Adım 1:
İlk olarak Sql Server'dan ilgili tablodaki ilişkiyi tanımlarken Cascade delete kuralını ekliyoruz.



Adım 2:
Visual Studio 2008'de Model'imizi Update ediyoruz

Adım 3:
EF SSDL dosyasını update ederken yeni Casdace delete kuralımızı ekliyor lakin CSDL de bu eklemeyi yapmıyor. Kendi Elimizle bu eklemeyi yapmamız gerekmekte.

 

Daha önce ObjectContext'ine aldığımız kaydı bu kodlarla siliyoruz

            var DelPost = (from p in MyEntity.Posts.Include("Comments")
where p.PostID == PostID
select p).First();
MyEntity.DeleteObject(DelPost);
MyEntity.SaveChanges();

Not: Kodlar kolaylık olması açısından Linq to Entities kullanılarak yazıldı ama performans açısından object query ya da cached query kullanmanızı öneririm.

Modelimizi kaydederek çalıştırıyoruz.

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Ado.Net, Asp.Net



Yorumlar

Yorum ekle


(Gravatar simgesini gösterecek)  

  Country flag

biuquote
  • Yorum
  • Canlı önizleme
Loading