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

EF अनावश्यक नल-चेक के साथ SQL क्वेरी क्यों उत्पन्न कर रहा है?

सेट करें UseDatabaseNullSemantics = true;

  • जब UseDatabaseNullSemantics == true , (operand1 == operand2) अनुवाद किया जाएगा:

    WHERE operand1 = operand2
    
  • जब UseDatabaseNullSemantics == false , (operand1 == operand2) अनुवाद किया जाएगा:

    WHERE
        (
            (operand1 = operand2)
            AND
            (NOT (operand1 IS NULL OR operand2 IS NULL))
        )
        OR
        (
            (operand1 IS NULL)
            AND
            (operand2 IS NULL)
        )
    

यह Microsoft द्वारा प्रलेखित है:

<ब्लॉकक्वॉट>

एक मान प्राप्त करता है या सेट करता है जो दर्शाता है कि दो ऑपरेंड की तुलना करते समय डेटाबेस नल सेमेन्टिक्स प्रदर्शित होते हैं, जिनमें से दोनों संभावित रूप से शून्य हैं। डिफ़ॉल्ट मान गलत है।

आप इसे अपने DbContext . में सेट कर सकते हैं सबक्लास कंस्ट्रक्टर, जैसे:

public class MyContext : DbContext
{
    public MyContext()
    {
        this.Configuration.UseDatabaseNullSemantics = true;
    }
}

या आप इस सेटिंग को अपने dbContext . पर भी सेट कर सकते हैं बाहर से उदाहरण नीचे दिए गए कोड उदाहरण की तरह, मेरे दृष्टिकोण से (देखें @GertArnold टिप्पणी), यह दृष्टिकोण बेहतर होगा, क्योंकि यह डिफ़ॉल्ट डेटाबेस व्यवहार या कॉन्फ़िगरेशन को नहीं बदलेगा):

myDbContext.Configuration.UseDatabaseNullSemantics = true;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में एकल पंक्ति MERGE/अप्सर्ट के लिए सिंटैक्स

  2. SQL सर्वर प्रबंधन स्टूडियो (SSMS) में क्वेरी विंडो को कैसे विभाजित करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 13

  3. SQL सर्वर 2008 पंक्ति सम्मिलित करें और टाइमस्टैम्प अपडेट करें

  4. T-SQL में PIVOT फंक्शन को समझना

  5. SQL सर्वर (T-SQL) में किसी प्रोफ़ाइल के भीतर डेटाबेस मेल खाते की अनुक्रम संख्या कैसे बदलें