के साथ कॉलम नामों का उद्धरण करना मैंने एक छोटी परियोजना के लिए एनएचबीरनेट 3.0 और पोस्टग्रेएसक्यूएल का उपयोग करना शुरू कर दिया है, अब तक एनएचबीरनेट साइट के कारण सवारी थोड़ी सी नाराज रही है और मुझे यकीन है कि यह उत्तर उनके उत्तर पर है वेबसाइट कहीं कहीं।NHibernate और PostgreSQL
मैं एक डेटाबेस है कि इन दो कॉलम (निश्चित रूप से वहाँ वास्तविक तालिका में अधिक है) है:
int ID
String Feature
अब मैं एक FluentNHibernate उपयोग कर रहा हूँ मानचित्रण ऐसा करने कुछ इस तरह:
public class MyEntityMap: ClassMap<MyEntity>
{
public MyEntityMap()
{
Id(x => x.ID);
Map(x => x.Feature);
}
}
और एक LINQ क्वेरी डेटा
var strucs = from str in session.Query<MyEntity>()
where str.ID < 5
select str;
क्वेरी उचित उत्पन्न होगा बाहर निकलने के लिए एसक्यूएल स्टेटमेंट, अच्छी तरह से। समस्या यह है, क्योंकि मैं अपने कॉलम नामों बड़े अक्षरों का है कि आप उन्हें उद्धरण में रैप करने के लिए है, लेकिन उत्पन्न एसक्यूएल कोड इस तरह दिखता है:
SELECT this_.ID as ID0_0_, this_.feature as feature0_0_,
FROM "MyEntity" this_ WHERE this_.ID < 5
कहाँ कॉलम उनके आसपास उद्धरण नहीं है। मैं हो, तो मैं इस चलाने के एक "कॉलम this_.id" नहीं मिला है आदि
किसी को भी पता है कि कैसे मैं NHibernate उद्धरण में स्तंभ नाम रैप करने के लिए मिल सकता है?
संपादित करें: मैं कॉलम नामों को कम नहीं कर सकता क्योंकि कुछ कॉलम हैं जो किसी तृतीय पक्ष प्रोग्राम को अपरकेस में होना चाहिए।
मैं .ExposeConfiguration जोड़ने की कोशिश की (cfg => cfg.SetProperty ("hbm2ddl.keywords", "ऑटो बोली") लेकिन यह में अपरकेस वर्णों का प्रयोग न करें कुछ भी करने को नहीं लगता है।
हम्म स्तंभों में से एक है करने के लिए है ' इसे एक प्रदान करने के लिए इसे ओवरराइड करें, इसलिए 'if (settings.IsAutoQuoteEnabled)' पर कोड अपवाद फेंकता है और वे इसे अनदेखा करते हैं। मुझे आश्चर्य है कि किसी ने पोस्टग्रेएसक्यूएल के लिए उस विधि को क्यों लागू नहीं किया है। –
सही दिशा में बिंदु के लिए धन्यवाद, मैं PostgreSQLDialect के लिए अपना खुद का त्वरित GetDataBaseSchema लागू किया और ऐसा लगता है कि अब ठीक काम कर रहा है। –
@Nathan, क्या आप समाधान साझा कर सकते हैं? –