2013-08-17 4 views
5

मैं Dapper.net एक्सटेंशन का उपयोग कर रहा हूं और एक पूर्ण कस्टम मैपर लिखने के बिना कुछ गुणों को अनदेखा करना चाहता हूं। जैसा कि आप नीचे क्लासमैपर में देख सकते हैं वहां बहुत सारे अनावश्यक कोड हैं जब मैं वास्तव में एक संपत्ति को अनदेखा करना चाहता हूं। इसे पूरा करने का सबसे अच्छा तरीका क्या होगा?Dapper.net एक्सटेंशन का उपयोग कर कक्षा संपत्ति को अनदेखा कैसे करें?

मुझे यहां दिए गए उत्तर को पसंद है https://stackoverflow.com/a/14649356 लेकिन मुझे नाम लिखना नहीं है जहां 'लिखें' परिभाषित किया गया है। जो Dapper.Contrib परियोजना का हिस्सा है -

public class Photo : CRUD, EntityElement 
{ 
    public Int32 PhotoId { get; set; } 
    public Guid ObjectKey { get; set; } 
    public Int16 Width { get; set; } 
    public Int16 Height { get; set; } 
    public EntityObjectStatus ObjectStatus { get; set; } 
    public PhotoObjectType PhotoType { get; set; } 
    public PhotoFormat2 ImageFormat { get; set; } 
    public Int32 CategoryId { get; set; } 

    public int SomePropertyIDontCareAbout { get; set; } 
} 


public class CustomMapper : DapperExtensions.Mapper.ClassMapper<Photo> 
{ 
    public CustomMapper() 
    { 
     Map(x => x.PhotoId).Column("PhotoId").Key(KeyType.Identity); 
     Map(x => x.ObjectKey).Column("ObjectKey"); 
     Map(x => x.Width).Column("Width"); 
     Map(x => x.Height).Column("Height"); 
     Map(x => x.ObjectStatus).Column("ObjectStatus"); 
     Map(x => x.PhotoType).Column("PhotoType"); 
     Map(x => x.ImageFormat).Column("ImageFormat"); 
     Map(x => x.CategoryId).Column("CategoryId"); 

     Map(f => f.SomePropertyIDontCareAbout).Ignore(); 
    } 
} 

उत्तर

4

WriteAttribute वर्ग Dapper.Contrib.Extensions नाम स्थान में स्थित है। आप जोड़ सकते हैं कि nuget के माध्यम से, पैकेज "Dapper.Contrib"

+2

Nuget isn पर Dapper.Contrib पैकेज ' ऐसा लगता है कि लेटेस कोड के साथ अद्यतन किया गया है। मैंने इसे अपडेट करने के लिए मालिक से संपर्क किया है। –

+1

... और अब यह अपडेट किया गया है और उम्मीद है कि भविष्य में अपडेट किया जाएगा। –

4

नाम पर है आप Person.cs में देख सकते हैं, केवल आपके ClassMapper के निर्माता में AutoMap(); कहते हैं। उदाहरण के लिए:

public class CustomMapper : DapperExtensions.Mapper.ClassMapper<Photo> 
{ 
    public CustomMapper() 
    { 
     Map(x => x.PhotoId).Key(KeyType.Identity); 
     Map(f => f.SomePropertyIDontCareAbout).Ignore(); 
     AutoMap(); 
    } 
} 
+0

यह काम कर सकता है। बस 'base.AutoMap() 'करने के लिए बेहतर है या' कस्टममैपर 'वर्ग को' मुहरबंद 'के रूप में चिह्नित करें। धन्यवाद –

3

आप संपत्ति को [गणना] के साथ सजाने के लिए कर सकते हैं और संपत्ति को सम्मिलित करने पर अनदेखा कर दिया जाएगा। शब्दार्थ यह सही नहीं हो सकता है, लेकिन यह काम करने के लिए लगता है: फिर

[Computed] 
public int SomePropertyIDontCareAbout { get; set; } 

, पीटर रिची का जवाब है की संभावना अधिक स्पॉट पर साथ:

[WriteAttribute(false)] 
public int SomePropertyIDontCareAbout { get; set; } 
संबंधित मुद्दे