2010-08-26 12 views
5

मैं मॉडल पर आलसी लोडिंग संग्रह का उपयोग करना चाहता हूं, लेकिन मैं अलग-अलग तरीकों के माध्यम से कार्यक्षमता को जोड़ने/निकालना चाहता हूं। इस तरह तो कुछ:इकाई फ्रेमवर्क सीटीपी 4 कोड पहला: मैपिंग संरक्षित गुण

class Model 
{ 
    protected virtual ICollection<Something> _somethings { get; set; } 

    public IEnumerable<Something> Somethings 
    { 
    get { return _somethings; } 
    } 

    public void AddSomething(Something thingToAdd) 
    { 
    /* logic */ 
    _somethings.Add(thingToAdd); 
    } 
} 

मैं समझ नहीं इस के लिए मैपिंग को कॉन्फ़िगर कैसे करें। मैंने कॉन्फ़िगरेशन क्लास का उपयोग करने में देखा: EntityConfiguration। लेकिन चूंकि संपत्ति सुरक्षित है, इसलिए मैं यह नहीं समझ सकता कि इस पर कॉन्फ़िगरेशन कैसे सेट करें। क्या मैं यहां क्या करने की कोशिश कर रहा हूं उसे पूरा करने का कोई तरीका है?

+0

चाहेंगे कुछ का उपयोग कर सकते हैं? –

+0

मुझे लगता है कि आपके जैसी ही समस्या है: http://stackoverflow.com/questions/3574333/ef-4-0-mapping-to-readonly-property-with-private-field –

उत्तर

0

मुझे लगता है कि यदि आप अपने मॉडल वर्ग के अंदर कॉन्फ़िगरेशन क्लास (विरासत इकाई कॉन्फ़िगरेशन) घोषित करते हैं, तो यह काम कर सकता है। यह एक अच्छा समाधान नहीं है, क्योंकि सबक्लासिंग आमतौर पर निराश होती है, लेकिन यह एकमात्र चीज है जिसे मैं सोच सकता हूं।

0

मैंने सुना है कि यह केवल EDMX फ़ाइल के माध्यम से किया जा सकता है .. पहले कोड नहीं।

1

आप इस

protected virtual ICollection<Something> _somesing { get; set; } 
public static readonly Expression<Func<Model, ICollection<Something>>> Expression = p => p._something; 

public IReadOnlyCollection<Something> Something 
{ 
    return _sumething.AsReadOnly(); 
} 

तरह संरक्षित संपत्ति को उपयोग करने के लिए केवल पढ़ने के लिए स्थिर अभिव्यक्ति का उपयोग और यह OnModelCreating विधि में DbContext कक्षा में मानचित्रण संरक्षित संपत्ति के लिए एक भंडार काम की तरह

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Model>().HasMany<Something>(Model.Expression); 
} 
संबंधित मुद्दे