2016-04-13 13 views
0
public class Ninja 
{ 
    public int Id { get; set; } 

    public Ninja BestFriend { get; set; } 
    //public Ninja Enemy { get; set; } 
} 

Veritabanımı güncellemeye çalıştığımda, bu yalnızca bir ninja üyesiyle çalışacaktır. Birden fazla, Ninja Düşmanı dahil etmeye çalışırsam, bir hata alıyorum. (Bu çözeltinin kadar neden bir açıklama için ideal bir im.)Bir birleşimin asıl sonu belirlenemeyen birden fazla alt öğe

tiplerin NinjaDomain.Classes.Ninja 've 'NinjaDomain.Classes.Ninja' arasında bir ilişki ana sonunu belirlemek edilemiyor . Bu ilişkilendirmenin temel ucu, ilişki akıcı API'si veya veri ek açıklamaları kullanılarak açıkça yapılandırılmalıdır.

+0

Yeni bir tabloya ihtiyacınız olabilir veya "modelBuilder" içindeki ilişkiyi söyleyebilirsiniz. Alanları hangisinin gerekli olduğunu ve hangisinin isteğe bağlı olduğunu söyleyin. –

+0

Gottcha. Aslında bunun neden bir çözüm kadar olduğuna dair bir açıklama arıyorum. – Lautaro

cevap

1

Sadece bu deneyin:

public class Ninja 
{ 
    public int Id { get; set; } 

    public virtual Ninja BestFriend { get; set; } 
    public virtual Ninja Enemy { get; set; } 

    [InverseProperty("BestFriend")] 
    public virtual ICollection<Ninja> whoseBestFriend { get; set; } 
    [InverseProperty("Enemy")] 
    public virtual ICollection<Ninja> whoseEnemy { get; set; } 
} 

Son iki özellik türleri 'NinjaDomain.Classes.Ninja' ve 'NinjaDomain.Classes.Ninja' arasında bir ilişki asıl sonunu belirler. Ninja'un her biri şimdi kimin Enemy olduğunu ve kimin için BestFriend olduğunu biliyor.

+0

Bunu yaptı. Teşekkürler! Ancak bir sorum var. Ninja türünde sınıfta yalnızca bir üyem varsa, BestFriend diyelim, de DB'yi hatasız olarak güncelleyebilirim. Nasıl olur? Anlamadım. – Lautaro

+0

Katılıyorum, garip, üstelik üçüncü 'Ninja' özelliğini ilk sınıfınıza ya da birkaç yeni sürümüne eklemeyi denerseniz, bunların hepsinin 'ICollection' olmadan bile tamam olacağını göreceksiniz. Hata olabilir ya da EF hakkında bilmediğimiz bir şey. –

İlgili konular