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
31
A
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.
@Hi Ladislav: Ya birden fazla ilişki varsa? – DotnetSparrow
MyEntity'deki bire çok birincil anahtar ile yabancı anahtar olamaz. Diğer FK mülkü veya FK özelliği bulunmamalıdır. –
@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