5

को बंद करने के लिए सेट किया गया है, तो मुझे इस बारे में सोचा कि मुझे प्यार साझा होगा।कोड द्वारा NHibernate मैपिंग का उपयोग करना: तालिका 'DietUser' में पहचान कॉलम के लिए स्पष्ट मान सम्मिलित नहीं कर सकता है जब IDENTITY_INSERT


SQL सर्वर के साथ कोड द्वारा NHibernate के नए मैपिंग का उपयोग करते समय मैं एक इकाई को सहेजने में असमर्थ हूं। जब एक इकाई के एक System.Data.SqlClient.SqlException निम्न संदेश के साथ फेंक दिया जाता है (ऋण तालिका नाम) की बचत:

"तालिका 'DietUser' में पहचान स्तंभ के लिए स्पष्ट मूल्य सम्मिलित नहीं कर सकते जब identity_insert को बंद पर सेट है । "

मेरे मेज एक पहचान आईडी और इकाई & मैपिंग इस तरह दिखना उपयोग करता है:

public class User 
{ 
    public virtual int Id { get; set; } 
    public virtual string Name { get; set; } 
    public virtual string Username { get; set; } 
    public virtual string Password { get; set; } 
    public virtual short DailyPoints { get; set; } 
} 

public class UserMapping : ClassMapping<User> 
{ 
    public UserMapping() 
    { 
     Id(x => x.Id); 
     Property(x => x.Name); 
     Property(x => x.Username); 
     Property(x => x.Password); 
     Property(x => x.DailyPoints); 
    } 
} 

मुझे पता है कि मैं इस एक्सएमएल मानचित्रण का उपयोग कर के नक्शे हैं, लेकिन मैं निर्मित मानचित्रण द्वारा उपयोग करना चाहते हैं यदि संभव हो तो कोड।

उत्तर

10

फ़ोरम में कुछ खोदने के बाद मुझे भाग्यशाली मिला और यह पता चला कि उसे कैसे मैप किया जाए। example Fabio provides बहुत अच्छा है यदि आप किसी आईडी या किसी ऐसे चीज़ के लिए GUID का उपयोग करने जा रहे हैं, लेकिन यदि आप पहचान आईडी का उपयोग करना चाहते हैं (अन्य लोगों का समूह भी देखें), तो आपको यह निर्दिष्ट करना होगा कि आप किस जनरेटर पर जा रहे हैं उपयोग। पहचान आईडी की

public class UserMapping : ClassMapping<User> 
{ 
    public UserMapping() 
    { 
     Id(x => x.Id, map => map.Generator(Generators.Identity)); 
     Property(x => x.Name); 
     Property(x => x.Username); 
     Property(x => x.Password); 
     Property(x => x.DailyPoints); 
    } 
} 
+0

तो क्या आप GUID का उपयोग अपनी पहचान कॉलम के रूप में कर रहे हैं? –

+0

नहीं, केवल मानक int पहचान कॉलम जो आप अधिकांश SQL सर्वर तालिकाओं में देखेंगे। – bressain

0

क्या आप इकाई को बनाए रखने से पहले आईडी संपत्ति को मान असाइन करने का प्रयास कर रहे हैं? क्या आप कोड का चोटी जोड़ सकते हैं जो डेटाबेस में बदलावों को जारी रखने की कोशिश कर रहा है?

जबकि मैंने एनएचबर्ननेट सीखना शुरू किया, मैंने उदाहरण शुरू करने के लिए एक छोटा डेमो बनाया था। यही पर है। Hope यह मदद करता है।

+0

मैं नहीं था, यही मुझे परेशान करता है। मैं सिर्फ नाम, उपयोगकर्ता नाम, पासवर्ड और डेलीपॉइंट्स सेट कर रहा था। – bressain

1

भाषण, यदि आप सेट generator=identity, NHibernate बैच डालने प्रदर्शन करने में सक्षम नहीं होगा क्योंकि यह इस खूनी डेटाबेस द्वारा उत्पन्न आईडी प्राप्त करने के लिए एक अतिरिक्त अनुरोध की जरूरत है: यहाँ मेरी अद्यतन मानचित्रण कि काम करता है।