2009-05-25 9 views
23

मेरे पास एक कक्षा है जो धाराप्रवाह निबर्ननेट में मैप की गई है लेकिन मैं चाहता हूं कि कक्षाओं में से एक गुण मैपिंग द्वारा अनदेखा किया जाए।Fluent NHibernate को क्लास प्रॉपर्टी को मानचित्र न करने के लिए कैसे कहें

वर्ग और मानचित्रण के साथ

नीचे मैं इस त्रुटि मिलती है:

निम्नलिखित प्रकार प्रॉक्सी के रूप में इस्तेमाल नहीं किया जा सकता है: iMasterengine.Data.Model.Calendar: विधि get_HasEvents आभासी होना चाहिए

//my class 
public class Calendar : IEntity { 
    public virtual int Id { get; private set; } 
    public virtual string Name { get; set; } 
    public virtual string SiteId { get; set; } 
    public virtual IList<CalendarEvent> Events { get; set; } 
    //ignore this property 
    public bool HasEvents { get { return Events.Count > 0; } } 
} 

//my mapping 
public class CalendarMap : ClassMap<Calendar> { 
    public CalendarMap() { 
     Id(x => x.Id); 
     Map(x => x.Name); 
     Map(x => x.SiteId); 
     HasMany(x => x.Events).Inverse(); 
     //what do I put here to tell nhibernate 
     //to ignore my HasEvents property? 
    } 
} 

उत्तर

13
map.IgnoreProperty(p => p.What); 
+10

उस लाइन को कहां रखा जाना चाहिए? मुझे लगा कि यह कैलेंडरमैप कन्स्ट्रक्टर में जाएगा, लेकिन मुझे वहां एक नक्शा उदाहरण दिखाई नहीं देता है। – ddc0660

+0

यह जोड़ा जाना चाहिए जहां आप कॉन्फ़िगरेशन बनाते हैं। यह लिंक देखें [http://wiki.fluentnhibernate.org/Auto_mapping#Ignoring_properties ](http://wiki.fluentnhibernate.org/Auto_mapping#Ignoring_properties) – Rajeesh

+17

IgnoreProperty() केवल * ऑटोमैपिंग * के लिए है यदि आप अपने मैपिंग स्वयं निर्दिष्ट कर रहे हैं (यानी क्लासमैप का उपयोग करना) तो यह प्रासंगिक नहीं है। पोस्टर में एक क्लासमैप शामिल है, और ऑटोमैपिंग के बारे में कुछ भी नहीं कहा है, इसलिए मुझे नहीं लगता कि इसकी प्रासंगिकता क्या है। – UpTheCreek

26

तुम बस HasEventsआभासी कक्षा में कर सकते हैं:

public virtual bool HasEvents { get { return Events.Count > 0; } } 

आपको मैपिंग में कुछ भी जोड़ने की आवश्यकता नहीं है।

यदि आप ऑटो मैपिंग का उपयोग कर रहे हैं, तो आपको केवल संपत्ति में प्रवेश करने के लिए धाराप्रवाह बताना होगा, जो मुझे नहीं लगता कि आप हैं।

+0

मुझे लगता है कि यह linq – tykovec

+1

के साथ काम नहीं करता है, मेरे लिए NHibernat.e के पुराने संस्करण पर लिंक के माध्यम से काम नहीं करता है – alphadogg

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