SORU
12 Mart 2011, CUMARTESİ


İlk kod: Bağımsız dernekler vs Yabancı anahtar dernekler?

Kendimi zihinsel bir tartışmaya yeni bir proje üzerinde çalışmaya başladım. her zaman ben ve benim pocos ' tasarlıyorum. Birçok dersler iyilik gibi kod örnekleri/gördümyabancı anahtar ilişkisi:

Yabancı anahtar ilişkisi

public class Order
{
    public int ID { get; set; }
    public int CustomerID { get; set; } // <-- Customer ID
    ...
}

Karşıt olarakbağımsız bir dernek:

Bağımsız bir dernek

public class Order
{
    public int ID { get; set; }
    public Customer Customer { get; set; } // <-- Customer object
    ...
}

Bende işe yaradı Arabiriminin geçmiş ve kullanılan bağımsız dernekler, hangi sadece daha OO, ama aynı zamanda (tembel yükleme) avantaj vererek beni erişmek için tüm Müşteri nesne yerine, sadece kendi KİMLİĞİ. Bu bana, örneğin, Sipariş bir kopyasını almak ve yapmak zorunda kalmadan Order.Customer.FirstName Bir çok uygundur açıkça katılın sağlar.

Sözün özü, benim sorular şunlardır:

  1. Orada herhangi bir önemli dezavantajları vardır kullanarak bağımsız dernekleri? ve...
  2. Eğer herhangi bir, ne varsa değil mi tüm yabancı anahtar dernekleri kullanarak neden?

CEVAP
12 Mart 2011, CUMARTESİ


Eğer ORM tam olarak yararlanmak istiyorsanız kesinlikle Varlık başvurusu kullanır:

public class Order
{
    public int ID { get; set; }
    public Customer Customer { get; set; } // <-- Customer object
    ...
}

Sen Sayılı bir veritabanından bir varlık bir model oluşturmak her zaman varlık başvuruları oluşturur. Eğer bunları kullanmak istemiyorsanız eğer elle EDMX dosyasını değiştirmek ve özelliklerini Sayılı temsil eden eklemelisiniz. En azından bu sadece Bağımsız dernekler izin verilen Varlık Çerçevesi v1 durumda.

Varlık çerçevesi v4 Derneği Yabancı anahtar ilişkisi olarak adlandırılan yeni bir tür sunuyor. Bağımsız ve yabancı anahtar Birliği arasındaki en bariz fark, sırayla sınıf:

public class Order
{
    public int ID { get; set; }
    public int CustomerId { get; set; }  // <-- Customer ID
    public Customer Customer { get; set; } // <-- Customer object
    ...
}

Gördüğünüz gibi FK özellik ve varlık başvuru var. Dernek iki tür arasında daha fazla farklılıklar vardır:

Bağımsız bir dernek

  • ObjectStateManager ayrı bir nesne olarak temsil edilir. EntityState kendi var!
  • Derneği kurarken her zaman derneğin iki taraftan entitites gerekiyor
  • Bu derneğin varlığı aynı şekilde eşleştirilir.

Yabancı anahtar ilişkisi

  • ObjectStateManager ayrı bir nesne olarak temsil edilir. Bundan dolayı bazı özel kurallara uymak zorundadır.
  • Dernek binasında dernek iki ucu da gerek yok. Üst varlık alt varlık ve PK için yeterlidir ama PK değeri benzersiz olmalıdır. Yabancı tuşları kullanırken çok dernek de yeni oluşturulan varlıkları ilişkilerde kullanılan geçici benzersiz bir kimlik atamanız gerekir.
  • Bu dernek eşlenen ama bunun yerine başvuru kısıtlamaları tanımlar.

Eğer yabancı anahtar ilişkisi kullanmak istiyorsanız kene gerekirModeli yabancı anahtar sütunları vardırVarlık Veri Modeli Sihirbazı.

Düzenleme:

Dernekler bu iki tür arasındaki farkı çok iyi I wrote a short article daha fazla ayrıntı ile bu örtü ve bu konuda kendi fikrimi yani bilinmiyor bulundu.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Hollyscoop

    Hollyscoop

    30 Ocak 2007
  • Keith Anthe

    Keith Anthe

    26 NİSAN 2011
  • njhaley

    njhaley

    24 NİSAN 2006