2010-08-24 13 views
17

İki tane "Yalnızca Kod" POCO'larım EF4 ve en son CTP'yi kullanarak var olan eski bir veritabanına karşı çalışıyorum. PocoA'ya karşı bir LINQ sorgusu çalıştırdıktan sonra, bu nesneyi o nesneye ekleyene kadar çalıştı, bir ilişki eklemeye çalışıyordum. Bunu yaptım kezVarlık Çerçevesi 4 Yalnızca Kod Hata "Tür başına birden fazla nesne kümesi desteklenmiyor"

public virtual PocoB pocoB { get; set; } 

, aşağıdaki hata almaya başladı:

Multiple object sets per type are not supported. The object sets 'PocoA_DbSet' and 'PocoB_DbSet' can both contain instances of type 'PocoA'.

Yani önümüzdeki ben ilişki tanımlanmadı çünkü benim sorunum olduğunu düşünmüş ve bu mirası veritabanı kullanıyordum Birincil ve yabancı anahtarlarda 'Id' soneki yerine 'fk/pk' öneki. Bu yüzden herhangi bir davranış değişikliği ile, yukarıda belirtilen sanal yönteme aşağıdaki veriler ek açıklama eklendi:

[RelatedTo(Property="PocoB", ForeignKey="fkPocoB")] 

Ben bu işi yapmak için değiştirilmesi gerekir ne için bir kayıp gerçekten değilim.

+0

"PocoA" ve "PocoB" sınıflarınızı sağlayabilir misiniz? Ayrıca, ilgili haritalama sınıfları. – Charlino

+5

Sorun bulundu. Yazım hatasıydı. PocoB için DbSet sınıfım DbSet 'olarak bildirildi. –

+15

Çözümünüzü bir yanıt olarak göndermelisiniz ve kabul etmelisiniz ... Bu soru cevapsız listeden çıkarılacaktır :) – forsvarir

cevap

46

DbContext sınıfınız, birden çok DbSet <T> özelliğinin açığa çıkması durumunda ortaya çıkarsa, bu hata oluşur. Temel olarak, hangi DbSet'in bir T örneğinin ait olduğunu anlayamaz.

kodunda, hata muhtemelen bu benziyordu: bu son hat DbSet <PocoB> yerine DbSet <PocoA>

TL olmalıydı

public class MyContex : DbContext { 
    public DbSet<PocoA> PocoA { get; set; } 
    public DbSet<PocoA> PocoB { get; set; } ... 

; DR - duyuyor bir özellik ve , DbSet'te tür parametresini değiştirmeyi unuttu.

+1

Takip ettiğin için teşekkür ederim. Başım ağrıyor :) –

+2

Sadece kopyala + yapıştır ile aynı şey kurbanı oldu. Bu bana biraz zaman kazandırdı. – joelmdev

+0

Aynı sorun. Aynı şeyi yaptım .. kopyala yapıştır! –

İlgili konular