2011-03-22 25 views
31

MVC 3 uygulamasında bir varlık sınıfı oluşturdum. RegistryId adında bir özellik, yabancı anahtarın yanı sıra birincil anahtardır. Yabancı anahtarın yanı sıra bir sütun birincil anahtarı nasıl yapabilirim? EF ORM tasarımcısı kullanmıyorum. Dersleri elle kodluyorum.Varlık Çerçevesinde Birincil/Yabancı Anahtar

cevap

55

"EF ORM tasarımcısı kullanmıyor" ile EF 4.1'den yeni DbContext API'sini kastediyorum. Çünkü, DbContext API'sini kastetmiyorsanız, yine de EDMX'i (tasarımcısı) kullanmak zorundasınız.

kullanabilirsiniz ya veri ek açıklamaları (System.ComponentModel.DataAnnotations): KeyAttribute ve ForeignKeyAttribute:

public class Registry 
{ 
    public virtual int Id { get; set; } 
    public virtual MyEntity MyEntity { get; set; } 
} 

public class MyEntity 
{ 
    [Key, ForeignKey("Registry")] 
    public virtual int RegistryId { get; set; } 

    public virtual Registry Registry { get; set; } 
} 

Yoksa akıcı API (Türetilmiş bağlamda OnModelCreating geçersiz kılma) kullanabilirsiniz:

(Edit: akıcı haritalama oldu MyEntity senin varlık

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    base.OnModelCreating(modelBuilder); 

    modelBuilder.Entity<MyEntity>() 
       .HasKey(e => e.RegistryId); 
    modelBuilder.Entity<MyEntity>() 
       .Property(e => e.RegistryId) 
       .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None); 
    modelBuilder.Entity<MyEntity>() 
       .HasRequired(e => e.Registry) 
       .WithRequiredDependent(r => r.MyEntity); 
} 

olduğu yerlerde) ters ve eksik FK ve Registry ile 1: 1 ilişkisinde ana varlıktır.

+0

@Hi Ladislav: Ya birden fazla ilişki varsa? – DotnetSparrow

+1

MyEntity'deki bire çok birincil anahtar ile yabancı anahtar olamaz. Diğer FK mülkü veya FK özelliği bulunmamalıdır. –

+0

@Ladislav: [ForeignKEy ("")] 'i kullanmaya çalıştığımda, sütun adını sorar. Kayıt Defterine veya Tescil Kuruluşunun Kimliğine İhtiyacım Var mı? – DotnetSparrow

İlgili konular