5

मैं SQL CE का उपयोग करके एक NHIbernate समाधान चला रहा हूं। मैं नीचे दी गई तालिका में फ़ील्ड मैप कर रहा हूं। हालांकि, कुछ डेटा आयात चलाने के लिए मुझे अस्थायी रूप से पहचान बंद करने में सक्षम होना चाहिए ताकि मैं डेटा को अपनी मौजूदा कुंजी के साथ आयात कर सकूं, फिर आयात समाप्त होने के बाद पहचान को वापस चालू कर सकता हूं।NHibernate- पहचान को बंद करें

मैं इस तरह समाधान से सीधे एक एसक्यूएल क्वेरी चलाने की कोशिश की है:

session.CreateSQLQuery(@"SET IDENTITY_INSERT [Article] ON"); 

लेकिन इस पर कोई असर नहीं हो रहा है।

क्या अस्थायी रूप से इसे चालू और बंद करने का कोई तरीका है?

Property(x => x.ArticleId, m => 
{ 
    m.NotNullable(true); 
    m.UniqueKey("UQ_Article_ArticleId"); 
    m.Column(cm => cm.SqlType("INT IDENTITY")); 
    m.Generated(PropertyGeneration.Insert); 
    m.Insert(true); 
    m.Update(false); 
}); 

उत्तर

0

यह अंत में काफी सरल था।

एसक्यूएल लाइन इस किया जाना चाहिए था:

session.CreateSQLQuery(@"SET IDENTITY_INSERT [Article] ON").ExecuteUpdate(); 

और यह एक लेन-देन के अंदर होने की जरूरत। हालांकि, आप केवल प्रति लेनदेन में एक टेबल पर ऐसा कर सकते हैं, इसलिए वास्तव में मुझे इतना मदद नहीं मिली।

+0

क्या किसी को वास्तव में यह काम मिल गया है? – Dan

0

एसक्यूएल जाने के लिए एक तरह से होना चाहिए, लेकिन मेरा मानना ​​है कि आप IDENTITY_INSERT का अर्थ उलट है।

पहचान कॉलम में सम्मिलित करने के लिए, आपको इसे ON पर चालू करने की आवश्यकता है।

session.CreateSQLQuery(@"SET IDENTITY_INSERT [Article] ON"); 

और के बाद आप अपने थोक डाला किया है, यह OFF को फिर से चालू।

session.CreateSQLQuery(@"SET IDENTITY_INSERT [Article] OFF"); 

MSDN पर अधिक जानकारी।

+0

हां, मैंने कोशिश की है लेकिन काम नहीं करता है। ऊपर मेरा उदाहरण दिखा रहा था कि मैं एसक्यूएल को कैसे कार्यान्वित कर रहा हूं। अभ्यास में मैं आपके द्वारा बताए गए तरीके से कर रहा हूं। बाद में "पहले" बाद में "बंद"। – user874615

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