Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

ओरेकल को ओआरए-12704 फेंकने के लिए ईएफ क्वेरी:चरित्र सेट मेल नहीं खाता

प्रश्न को अपडेट करने के लिए मैंने इसके लेखक (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''", "''");
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ओरेकल एसक्यूएल स्क्रिप्ट स्पूल फाइल कैसे बनाएं

  2. Oracle में DBTIMEZONE फ़ंक्शन

  3. जावा में कनेक्शन पूलिंग कैसे करें?

  4. ORA-00054:संसाधन व्यस्त है और NOWAIT निर्दिष्ट या समय समाप्त होने के साथ प्राप्त करें

  5. Oracle SQL में केस स्टेटमेंट के भाग में उपनाम का उपयोग करना