Çevrimiçi göründüğüm ve Programlama Varlığı Çerçevesi CodeFirst kitabında gördüğüm örneklerden, her iki sınıfta da bir koleksiyonunuz varsa, EF, MembersRecipes
ve her sınıfın birincil anahtarı gibi bir eşleme tablosu oluşturur bu tabloya bağlanır. Aşağıda ne zamanÇoktan çoğa eşleme tablosu
Ancak, bunun yerine Recipes
tablosunda yeni alan Member_Id
ve Members
tablodaki bir Recipe_Id
denilen olsun.
Yalnızca ikiden çoğa ilişki oluşturan, ancak çoktan çoğa değil, bu yüzden Üye 3'e (4, 5,6) ve Üyeler'e Bağlı Reçete 4'e üye olabildiğim için 3) vb.
Bu eşleme tablosunu oluşturmanın bir yolu var mı? ve eğer öyleyse nasıl "yemek kitapları" gibi başka bir şey ismini veriyorsunuz?
Teşekkür
public abstract class Entity {
[Required]
public int Id { get; set; }
}
public class Member : Entity {
[Required]
public string Name { get; set; }
public virtual IList<Recipe> Recipes { get; set; }
}
public class Recipe : Entity {
[Required]
public string Name { get; set; }
[ForeignKey("Author")]
public int AuthorId { get; set; }
public virtual Member Author { get; set; }
....
public virtual IList<Member> Members { get; set; }
}
GÜNCELLEME: Aşağıda Ben Akıcı API kullanmak etmeyen denedi başka yaklaşımdır ve bir sahibi bayrağıyla Recipe
üzerinde AuthorId
& Author
yerini, ben de yeniden adlandırmış Aşağıdaki örnek Cookbooks
'dan MembersRecipes
'a kadardır, bu aynı zamanda sorunumu cevaba benzer şekilde düzeltir, ancak belirtildiği gibi başka imalar da vardır.
public class MembersRecipes {
[Key, Column(Order = 0)]
[ForeignKey("Recipe")]
public int RecipeId { get; set; }
public virtual Recipe Recipe { get; set; }
[Key, Column(Order = 1)]
[ForeignKey("Member")]
public int MemberId { get; set; }
public virtual Member Member { get; set; }
public bool Owner { get; set; }
}
ve Recipe
& Member
sınıflarında
public virtual IList<MembersRecipes> MembersRecipes { get; set; }
:
Bu
yukarıda Kod İlk eşleştirmeleri oluşturulan tablolardır neden çok süslü bir terim (yük) ile geldiklerini bilmiyorum; ya da sadece ben, ana dilim İngilizce değil :-) Bilgisayar yükü ile genellikle yük kelimesini ilişkilendiriyorum. EF'de, yük, uğursuz bir şey değildir; tablonuzu, kullanıma hazır bir varlık haline getirerek tasarımınızı geleceğe hazırlayabilirsiniz (örneğin, birincil anahtar olarak ek bir kimlik ekleyerek, mevcut çoktan çoğa bileşik pk'nizi dönüştürmeniz gerekir) benzersiz birleşik sütunlar) –'dan itibaren Sizin durumunuzda, ekstra bir kimlik eklemediniz, bileşik birincil anahtarı korudunuz. Tablodaki Mal sahibi bayrağı, –
@MichaelBuen yüküdür. Veri yükü, ek veri (örneğin ilişkinin yaratma tarihi) ekleyebileceğiniz eşleme tablosunu (ilişki) belirtir. Gizli bir tabloyla çoktan çoğa EF kullanmanız gerekiyorsa, – RHAD