मेरे पास एक डीटीओ है जो डायनमोीडी टेबल से पढ़कर पॉपुलेट होता है। यह वर्तमान में इस तरह दिखता है:
public class Item
{
public string Id { get; set; } // PK so technically cannot be null
public string Name { get; set; } // validation to prevent nulls but this doesn't stop database hacks
public string Description { get; set; } // can be null
}
क्या इससे निपटने के लिए कोई सर्वोत्तम अभ्यास विकसित हो रहा है? मैं इसके बजाय एक गैर-पैरामीटर निर्माणकर्ता से बचना चाहूंगा, क्योंकि डायनमो एसडीके (साथ ही अन्य) में ओआरएम के साथ बुरी तरह से खेलता है।
यह लिखना मुझे अजीब लगता है public string Id { get; set; } = "";
क्योंकि ऐसा कभी नहीं होगा क्योंकि Id
पीके है और कभी भी अशक्त नहीं हो सकता। ""
अगर यह किसी भी तरह से किया तो भी क्या फायदा होगा ?
तो इस पर कोई सबसे अच्छा अभ्यास?
- क्या मुझे उन सभी को चिन्हित करना चाहिए, क्योंकि
string?
वे कभी-कभी अशक्त हो सकते हैं। - क्या मुझे इनिशियलाइज़ करना चाहिए
Id
और इसकेName
साथ ही""
क्योंकि वे कभी भी अशक्त नहीं होना चाहिए और यह इरादे को दर्शाता है भले ही""
उसका कभी उपयोग नहीं किया जाएगा। - ऊपर का कुछ संयोजन
कृपया ध्यान दें: यह C # 8 अशक्त संदर्भ प्रकारों के बारे में है। यदि आप नहीं जानते कि वे क्या जवाब नहीं दे रहे हैं।
= ""
, आप = null!
ऐसी संपत्ति को इनिशियलाइज़ करने के लिए उपयोग कर सकते हैं जिसे आप जानते हैं कि वह प्रभावी रूप से कभी नहीं होगी null
(जब कंपाइलर के पास यह जानने का कोई तरीका नहीं है)। यदि Description
कानूनी रूप से हो सकता है null
, तो इसे घोषित किया जाना चाहिए string?
। वैकल्पिक रूप से, अगर डीटीओ के लिए अशक्तता जाँच मदद से अधिक उपद्रव है, तो आप केवल इस प्रकार के लिए NRTs को बंद करने के लिए टाइप इन #nullable disable
/ रैप कर सकते हैं #nullable restore
।
#pragma warning disable CS8618
फ़ाइल के शीर्ष पर थप्पड़ मार सकते हैं ।