none
Entity Framework (Generate From Database) ilgili sorun? RRS feed

  • Soru

  • Kolay gelsin.

    Geçenlerde bir kütüphane otomasyonuna başladım. İlk Entity Framework deneyimim olacak demiştim. Ve Sayın Oğuz Kurtçuoğlunun ön muhasebe eğitim setini izleyerek başladım bu işe yalnız bir iki şey kafamı karıştırdı.

    Bir database içerisinde diyelimki 10 tane tablo var. Fakat bunlardan 7 tanesinde Primary Key tanımlı iken diğer 3'ü ilişkilendirmeli işlem tablolarım olduğu için primary key tanımlamaya ihtiyaç duymamışım. EF'de bir model oluşturup bu 10 tabloyuda datamodele atmaya çalıştığımda

    warning 6013: The table/view 'Bibliotecha.dbo.KUTUPHANEKITAP' does not have a primary key defined and no valid primary key could be inferred. This table/view has been excluded. To use the entity, you will need to review your schema, add the correct keys, and uncomment it.

    şeklinde bir hata veriyor. Hatayı anlıyorum benden KUTUPHANEKITAP alanına bir PK tanımlamamı istiyor. Ama niye? Benim o tablomda yalnızca KutuphaneID si ile KitapID si alanlarım bulunuyor. Yani ben orda iki tabloya ait olan ID leri bir tabloda ilişkilendirmişim.

    Soru1: EF bir tabloda illa ki PK tanımı istiyor mu?

    Soru2: Foreign Key tanımlaması henüz gerçekleştirmedim bu 10 tablo arasında. Tanımlarsam bu sorunun üstesinden gelebilir miyim?

    Not: Henüz işin çok başındayım diyebilirm EF de. Basit bir şekilde anlatırsanız çok memnun olurum.

    15 Ocak 2015 Perşembe 11:25

Yanıtlar

  • O kaydı diğer kayıtlardan ayıran tekil bilgi gerekli. Yoksa örneğin şu entityi sil dediğin bir silme sorgusunda hangi kaydın silineceğini nasıl söylecek db ye? Tüm kolonların bilgisini göndermesi gerekir gibi duruyor. Fakat gönderse bile tamamen aynı bilgilere sahip iki tane satır olabilir. Bu durumda ne yapacak? Bunun sizin için de sıkıntılı bir durum olması gerekir. EF den ziyade SQL tasarımıyla ilgili bir durum gibi, ne dersin?

     KutuphaneID si ile KitapID si var demişsiniz. Bu ikisini birden seçip PK yapabilirsiniz gibi duruyor, çünkü bir kitabı aynı kütüphaneye ikinci defa bağlayan bir satır daha olması normal durmuyor.  Tipik Many-To-Many durumu.

    http://www.tomjewett.com/dbdesign/dbdesign.php?page=manymany.php

    http://msdn.microsoft.com/en-us/library/ms365407.aspx



    15 Ocak 2015 Perşembe 11:54

Tüm Yanıtlar

  • O kaydı diğer kayıtlardan ayıran tekil bilgi gerekli. Yoksa örneğin şu entityi sil dediğin bir silme sorgusunda hangi kaydın silineceğini nasıl söylecek db ye? Tüm kolonların bilgisini göndermesi gerekir gibi duruyor. Fakat gönderse bile tamamen aynı bilgilere sahip iki tane satır olabilir. Bu durumda ne yapacak? Bunun sizin için de sıkıntılı bir durum olması gerekir. EF den ziyade SQL tasarımıyla ilgili bir durum gibi, ne dersin?

     KutuphaneID si ile KitapID si var demişsiniz. Bu ikisini birden seçip PK yapabilirsiniz gibi duruyor, çünkü bir kitabı aynı kütüphaneye ikinci defa bağlayan bir satır daha olması normal durmuyor.  Tipik Many-To-Many durumu.

    http://www.tomjewett.com/dbdesign/dbdesign.php?page=manymany.php

    http://msdn.microsoft.com/en-us/library/ms365407.aspx



    15 Ocak 2015 Perşembe 11:54
  • Sağolun hocam ya çok süper cevap olmuş. Şimdi anladım gibi mantığını.
    15 Ocak 2015 Perşembe 13:26
  • Merhaba,

    Ön Muhasebe Programı Eğitim setinden hariç olarak Entity Framework hakkında da makale serisi hazırlıyorum. İsterseniz buradan ilk makaleye bakabilir ve devamını da sitem üzerinden inceleyebilirsiniz.

    İyi çalışmalar..


    oguzkurtcuoglu.com


    15 Ocak 2015 Perşembe 16:12
  • Bakmıştım hocam. Teşekkür ederim.
    15 Ocak 2015 Perşembe 19:53