2011-03-22 18 views
31

मैंने अपने एमवीसी 3 एप्लिकेशन में एक इकाई वर्ग बनाया है। RegistryId नामक विशेषता में से एक प्राथमिक कुंजी के साथ ही विदेशी कुंजी है। मैं कॉलम प्राथमिक कुंजी के साथ-साथ विदेशी कुंजी कैसे बना सकता हूं? मैं ईएफ ओआरएम डिजाइनर का उपयोग नहीं कर रहा हूं। मैं हाथ से कक्षाओं कोडिंग कर रहा हूँ।प्राथमिकता फ्रेमवर्क में प्राथमिक/विदेशी कुंजी

उत्तर

55

मुझे लगता है कि "ईएफ ओआरएम डिजाइनर का उपयोग नहीं करना" का मतलब है कि आप ईएफ 4.1 से नए DbContext एपीआई का मतलब है। क्योंकि अगर आपका मतलब DbContext एपीआई नहीं है तो आपको अभी भी ईडीएमएक्स (डिजाइनर) का उपयोग करना होगा। डेटा एनोटेशन

आप या तो उपयोग कर सकते हैं (System.ComponentModel.DataAnnotations): KeyAttribute और 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; } 
} 

या आप धाराप्रवाह एपीआई (अपने व्युत्पन्न संदर्भ में OnModelCreating अधिभावी) का उपयोग कर सकते हैं:

(संपादित करें: धाराप्रवाह मानचित्रण था उलट और अधूरा)

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); 
} 

MyEntity जहाँ आपके इकाई है एफके और Registry के साथ 1: 1 संबंध में प्रमुख इकाई है।

+0

@Hi Ladislav: क्या होगा अगर कई रिश्तों में से एक है? – DotnetSparrow

+1

MyEntity में एक से कई प्राथमिक कुंजी विदेशी कुंजी नहीं हो सकती है। अन्य एफके संपत्ति या कोई एफके संपत्ति नहीं होनी चाहिए। –

+0

@ लाडिस्लाव: जब मैं [विदेशीकेई ("")] का उपयोग करने की कोशिश करता हूं, तो यह कॉलम नाम मांगता है। क्या मुझे इसके अंदर रजिस्ट्री या रजिस्ट्री इकाई के आईडी देने की ज़रूरत है? – DotnetSparrow

संबंधित मुद्दे