बिना dbSet में एक रिकॉर्ड ढूँढें का उपयोग कर खोजें मैं एक उपयोगकर्ता तालिका है:एक प्राथमिक कुंजी
Users:
+ID
+Username
+...
मैं myDBContext.Users.Find(Username)
उपयोग करने के लिए एक उपयोगकर्ता पंख करना चाहते हैं। मेरे वर्तमान संदर्भ में मैं अपनी आईडी का उपयोग नहीं कर सकता।
क्या मुझे एक पूर्ण LINQ क्वेरी का उपयोग करना है? जैसे
var user = from users in myDBContext.Users.Find(Username)
where users.Username == username
select users
मैं अपने edmx में एक प्राथमिक कुंजी के रूप उपयोगकर्ता नाम को परिभाषित करने की कोशिश की है लेकिन यह है कि निम्न त्रुटि के परिणामस्वरूप:
Properties referred by the Principal Role User must be exactly identical to the key of the EntityType CamelotShiftManagementModel.User referred to by the Principal Role in the relationship constraint for Relationship CamelotShiftManagementModel.AssociationUserFK1. Make sure all the key properties are specified in the Principal Role. C:\Code\CamelotShiftManagement\CamelotShiftManagement\Models\CamelotDB.edmx 278 11 CamelotShiftManagement
और भी बेहतर! .. धन्यवाद। – Mortalus
इसके बजाय 'FirstOrDefault' का उपयोग करना बेहतर नहीं होगा? 'सिंगलऑर्डफॉल्ट' विधि की मेरी समझ यह है कि यह सुनिश्चित करने के लिए * पूरे * तालिका को ब्राउज़ करेगा कि केवल एक रिकॉर्ड स्थिति से मेल खाता है। ऐसा नहीं हो सकता है कि ओपी चाहता है। – Crono
@ क्रोनो हां आप FirstOrDefault के लिए सही हैं अगर हम सिंगलऑर्डफॉल्ट की तुलना में इसके प्रदर्शन पर विचार करते हैं। लेकिन यहां मुझे लगता है कि अपेक्षित परिणाम के आधार पर हमें इन दो तरीकों के बीच चयन करना चाहिए। यदि आप केवल एक ही परिणाम चाहते हैं और यदि आप एक से अधिक अनुक्रमों का उपयोग करते हैं तो आप अपवाद की उम्मीद कर रहे हैं तो सिनलऑरडिफॉल्ट का उपयोग करें अन्यथा FirstOrDefault का उपयोग करें। मैं इस संदर्भ के साथ अपना जवाब अपडेट करूंगा। –