2010-08-20 13 views
9

धाराप्रवाह NHibernate, और automappings (nhibernate मेरी db स्कीमा बनाता है) का उपयोग कर, कैसे कर सकते हैं मैं डेटाबेस में एक nvarchar (अधिकतम) स्तंभ निम्नलिखित वर्ग के आधार पर बनाने के लिए nhibernate मिलधाराप्रवाह NHibernate automapping संपत्ति (अधिकतम)

public class VirtualPage : BaseEntity 
{ 
    public virtual int ParentId { get; set; } 
    public virtual string PageName { get; set; } 
    public virtual string Title { get; set; } 
    public virtual string Body { get; set; } 
    public virtual string ViewName { get; set; } 
    public virtual string ViewData { get; set; } // this must be nvarchar(max) 
} 

उत्तर

27
automapping आप टेक्स्ट फ़ील्ड के लिए डिफ़ॉल्ट लंबाई ओवरराइड कर सकते हैं के साथ

कारण होगा, लेकिन यह लागू किया जाएगा सभी पाठ क्षेत्रों में।

आप धाराप्रवाह एपीआई के साथ बनाए गए स्पष्ट मैपिंग के साथ ऑटोमैपिंग को जोड़ सकते हैं।

सौभाग्य से, यह एक बहुत साधारण क्लास मैप करने के लिए (मैं यह सोचते कर रहा हूँ कि यह एक मेज-प्रति-उपवर्ग पदानुक्रम, जिसके कारण मैं ClassMap<> के बजाय SubClassMap<> का उपयोग करें और एक पहचानकर्ता मैप नहीं का हिस्सा है) है:

public class VirtualPageMap : SubClassMap<VirtualPage> 
{ 
    public VirtualPageMap() 
    { 
     Map(x => x.ParentId); 
     Map(x => x.PageName); 
     Map(x => x.Title); 
     Map(x => x.Body); 
     Map(x => x.ViewName); 
     Map(x => x.ViewData).Length(4001); // anything over 4000 is nvarchar(max) 
    } 
} 

मैंने वास्तव में कभी भी ऑटोमैपिंग का उपयोग नहीं किया है, इसलिए मुझे लगता है कि यह ठीक से उठाया जाएगा, लेकिन निश्चित रूप से नहीं पता।

अपनी कॉन्फ़िगरेशन में मानचित्रण जोड़ने के लिए मत भूलना।

Fluently.configure(
    // blah blah blah 
    .Mappings(m => 
    { 
     m.FluentMappings.AddFromAssemblyOf<VirtualPage>(); 
     m.AutoMappings.Add(// blah blah blah 
    } 
+0

thanx m8, कम कॉन्फ़िगरेशन के बाद और आपके उदाहरण का उपयोग करके यह काम करता है एक आकर्षण .. –

+0

कृपया ध्यान रखें कि लम्बाई (int.MaxValue) नक्शे का उपयोग nvarchar (255) पर करें। इसके अलावा, उपयोग नहीं कर रहे हैं। सभी तरंगों, नक्शा nvarchar (255) – veeroo

2

सेट एक उच्च संख्या (मैं 10000 का उपयोग करें) के लिए लंबाई संपत्ति - इस NHibernate एक nvarchar (अधिकतम) बनाने के लिए

+0

कोई संपत्ति की लंबाई कैसे निर्धारित करता है? –

+0

मानचित्र (x => x। )। तरंगदैर्ध्य (10000) :-) – Goblin

+0

हम्मम्म क्षमा करें ... शायद मुझे आपको यह कहना चाहिए था कि मैंने 2 दिन पहले निबर्ननेट का उपयोग शुरू किया था :), इसका मतलब है कि मेरे पास बिल्कुल कोई विचार नहीं है जाना चाहिए। मदद के लिए thanx –

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