मैं निम्नलिखित मानचित्रण है के बजाय होने के लिए:सेटिंग स्ट्रिंग "varchar" की एसक्यूएल प्रकार "nvarchar"
public class LogEntryMap
{
public LogEntryMap()
{
Map.Id(x => x.Id).GeneratedBy.Identity();
Map(x => x.Context).CustomSqlType("varchar").Length(512);
}
}
हालांकि, एसक्यूएल सर्वर 2008 में डेटाबेस उत्पन्न करने के लिए SchemaExport
का उपयोग कर, स्क्रिप्ट उत्पन्न लंबाई पर ध्यान नहीं देता इतना प्रभाव में यह 1 की लंबाई के साथ एक varchar
किया जा रहा समाप्त होता है:
create table OV_SAC.dbo.[LogEntry] (
Id BIGINT IDENTITY NOT NULL,
Context varchar null,
primary key (Id)
)
.CustomSqlType("varchar 512")
एक अपवाद फेंकता है। और CustomSqlType
को परिभाषित किए बिना, तारों को nvarchar
पर मैप किया गया है (जो Length
संपत्ति का सम्मान करता है)।
कोई सुझाव?
ग्रेट !! अब, अगर मैं अपने सभी गुणों को वर्चर के रूप में चाहता हूं, तो एक को छोड़कर? क्या मैं सम्मेलन द्वारा ओवरराइट किए बिना मैपिंग में उस इकाई के लिए कस्टम टाइप को ओवरराइड कर सकता हूं? –
@GerardoGrignoli: हाँ आप कर सकते हैं। सम्मेलन केवल डिफ़ॉल्ट सेट करते हैं। यदि आप ansi-string कन्वेंशन का उपयोग करते हैं, और फिर i.e. 'कस्टम टाइप टाइप करें 'के लिए एक विशिष्ट कॉलम मैपिंग करें, तो यह वैसे ही काम करेगा जैसा आप उम्मीद करेंगे। –
quetzalcoatl