प्रश्न को अपडेट करने के लिए मैंने इसके लेखक (ODP.Net प्रबंधित ड्राइवर - ORA-12704:कैरेक्टर सेट मिसमैच इन जेनरेट कोड) को समाप्त कर दिया, उन्होंने एक इंटरसेप्टर का उपयोग करके एक वर्कअराउंड पोस्ट किया, मैं यहां थोड़ा और विस्तार करूंगा। ।
सबसे पहले, मैंने कॉन्फ़िगरेशन लोड करने के लिए अपने डीबीसीएन्टेक्स्ट को सजाया। आप इसे छोड़ सकते हैं और अपने कॉन्फ़िगरेशन में जोड़ सकते हैं यदि आपके पास एक है:
[DbConfigurationType(typeof(MyDbConfiguration))]
public partial class MyContext : DbContext
कॉन्फिग क्लास बनाएं:
public class MyDbConfiguration : DbConfiguration
{
public MyDbConfiguration()
{
this.AddInterceptor(new NVarcharInterceptor()); //add this line to existing config.
}
}
इसके बाद इंटरसेप्टर बनाएं:
public class NVarcharInterceptor : IDbCommandInterceptor
{
public void NonQueryExecuted(DbCommand command, DbCommandInterceptionContext<int> interceptionContext)
{
if (command != null && !string.IsNullOrWhiteSpace(command.CommandText))
command.CommandText = command.CommandText.Replace("N''", "''");
}
public void NonQueryExecuting(DbCommand command, DbCommandInterceptionContext<int> interceptionContext)
{
if (command != null && !string.IsNullOrWhiteSpace(command.CommandText))
command.CommandText = command.CommandText.Replace("N''", "''");
}
public void ReaderExecuted(DbCommand command, DbCommandInterceptionContext<DbDataReader> interceptionContext)
{
if (command != null && !string.IsNullOrWhiteSpace(command.CommandText))
command.CommandText = command.CommandText.Replace("N''", "''");
}
public void ReaderExecuting(DbCommand command, DbCommandInterceptionContext<DbDataReader> interceptionContext)
{
if (command != null && !string.IsNullOrWhiteSpace(command.CommandText))
command.CommandText = command.CommandText.Replace("N''", "''");
}
public void ScalarExecuted(DbCommand command, DbCommandInterceptionContext<object> interceptionContext)
{
if (command != null && !string.IsNullOrWhiteSpace(command.CommandText))
command.CommandText = command.CommandText.Replace("N''", "''");
}
public void ScalarExecuting(DbCommand command, DbCommandInterceptionContext<object> interceptionContext)
{
if (command != null && !string.IsNullOrWhiteSpace(command.CommandText))
command.CommandText = command.CommandText.Replace("N''", "''");
}
}