2014-11-29 19 views
5

tanımlı hiçbir anahtara sahip İşte benim kodudur.Varlık tipi Ef6

public class Contacts 
{ 
    [Key] 
    public int ContactId { get; set; } 
    public string Name { get; set; } 
    public string Address { get; set; } 
    public string City { get; set; } 
    public string State { get; set; } 
    public string Zip { get; set; } 
    [DataType(DataType.EmailAddress)] 
    public string Email { get; set; } 
} 

alıyorum hatadır:

Varlık Türü 'İletişim' tanımlı hiçbir anahtara sahip. Bu varlık türünün anahtarını tanımlayın.
Varlık Türü: EntitySet 'İletişim' tanımlı hiçbir anahtara sahip tip 'Kişiler' dayanmaktadır

+1

? 'Key' özelliğini ayarladıktan sonra yeniden mi yaptınız? Ayrıca, 'İletişim' sınıfını aramayı tercih ederim, çünkü bir kişi temasını değil, 1 kişiyi temsil eder. –

+0

yes @Gert bunu yeniden yaptı, ancak sınıf ve kimliğin isimlendirilmesinde olduğu gibi problem. Yine de teşekkürler :) – Affuu

+2

Peki, sizin için iyi, ama mantıklı değil. Anahtar özellik burada yeterli olmalıdır. Başka bir şey olduğunu düşünüyorum. –

cevap

7

Eğer (Sorunuzun belirtilmeyen) EF Kod İlk kullanıyorsanız, sen kişi kimliği özelliğini değiştirmek gerekecektir ContactsId için isim senin Kişiler varlık türü için anahtarı tanımlamak amacıyla SinifAdi + Id kongre eşleşecek.

MSDN kod İlk Sözleşmeleri bakınız: Bunu zaten bir şekilde cevap edildiğini biliyoruz http://msdn.microsoft.com/en-us/data/jj679962.aspx

+1

Bir "Anahtar" özelliği olduğunda, sözleşmeler hiçbir şey yapmaz. –

+0

işe yaradı Hey :) teşekkür ederim :) – Affuu

+0

@jhischier benim için çok çalıştı. bunu anlayamadım – steveareeno

0

, ama bu karşılaşmak isteyenler için farklı bir yaklaşım sonrası istedim.

sahip bile bu hata benim için oluştu

[Anahtar] Ben birincil anahtar olarak atamak istediği özelliği, yukarıda tanımlandığı. Güncelleme-Veritabanı komutu sırasında meydana gelen hata, (Add-Göç yoluyla) göç benim adlandırma ben eklenecek istediği varlık olarak aynı neden oldu. Bunun nedeni, Ekleme Geçişi komutunun, varlık adıyla eşleşen kısmi bir sınıf oluşturmasıdır. Örneğin

:

public class Contacts 
{ 
    [Key] 
    public int ContactId { get; set; } 
    public string Name { get; set; } 
} 
ben çalıştırıldığında

işe yaramadı: göç sınıf imzası altında benziyordu

Add-Migration Contacts 
Update-Database 

çünkü ve vücut [Anahtar] ile hiçbir özelliği içerdiği xx özelliği

public sealed partial class Contacts 

Bunu çözmek için, aynı adlı geçişi sildim ve değiştirdim Eklenti Göç komut: Gerçekten

Add-Migration ContactsTable 
Update-Database 
İlgili konular