6

क्या इस (NHibernate.Criterion.IdentifierEqExpression) ऑनलाइन का उपयोग करने के लिए कोई अच्छा उदाहरण हैं? मुझे कोई नहीं मिला। मैं कन्स्ट्रक्टर में जो पास करना चाहता हूं उसके बारे में थोड़ा उलझन में हूं।एनएचबेर्नेट - तालिका नामों से बचने वाली सेना

मैं 1 का int32 में पास करता हूं और मैं सोचता हूं कि मेरा परीक्षण मूल रूप से "जहां id = 1" क्वेरी का प्रकार होना चाहिए और इसके बजाय यह "id id =?" के साथ उड़ाता है और स्थितित्मक मानकों के बारे में कुछ। यदि ऐसा नहीं है जो निर्माता में पारित किया जाना है ... क्या है?

असली मुद्दा
जब मैं एसक्यूएल उत्पादन को देखो यह तथ्य मेरी मेज उपयोगकर्ता नाम पर है और NHibernate [उपयोगकर्ता] जैसे कि यह संलग्न नहीं है के लिए छोड़कर सही ढंग से काम कर रहा है। इसे मजबूर करने का कोई तरीका?

+0

क्या आप अपनी मानदंड अभिव्यक्ति का उदाहरण पोस्ट कर सकते हैं? –

+0

मुझे IdentifierEqExpression के बीच संबंध नहीं दिख रहा है और तालिका नाम से बच रहा है ... कृपया थोड़ा और अधिक –

उत्तर

15

तालिका का नाम ` User ` के रूप में निर्दिष्ट करें। उदाहरण के लिए:

Map(x => x.IsCurrent, "`Current`"); 

ओह विरासत डीबीएस के साथ काम करने की खुशियों:

(HBM) 
<class name="User" table="`User`"> 

(Fluent) 
public UserMap() 
{ 
    WithTable("`User`"); 
    ... 

(Mapping By Code) 
public UserMap() 
{ 
    Table("`User`"); 
    ... 

इसी तरह, कॉलम के साथ आप की तरह कुछ करना होगा।

+2

समझाएं आप डेटाबेस में नामों से बचने के लिए बैकटिक (') का उपयोग कर सकते हैं ([] SQL सर्वर विशिष्ट हैं)। –

+1

अच्छा बिंदु, मैंने देखा कि वह [] का उपयोग कर रहा था और इसके बारे में भी नहीं सोचा था। मैं अपनी पोस्ट को सर्वोत्तम प्रथाओं के हित में अपडेट करूंगा। –

+0

कूल। कोई विचार नहीं था कि बैक-टिक मानक था। क्या कुछ हाइबरनेट सिर्फ MySQL से उधार लिया गया है, और फिर इसे डेटाबेस को स्वतंत्र बनाने के लिए बाहर निकलता है? बहुत खराब बोलियां सेटिंग्स आपके लिए इसका ख्याल नहीं रखती हैं। – BuddyJoe

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