मुझे लगता है कि आप का मतलब है की तरह कुछ:
public class PostFile {
public Int32 UserId{ get; set; }
public Int32 PostId { get; set; }
public virtual User? User { get; set; }
public virtual Post? Post { get; set; }
}
अपने मूल मुद्दे को एक चेतावनी है कि सी#8 के साथ पेश किया जा रहा है और अधिक स्पष्ट के साथ नल-सक्षम संदर्भ प्रकार के । के लिए, एक इकाई के कार्यान्वयन के ऊपर मान्य नहीं है जब तक कि इन रिश्तों को वास्तव में कर रहे हैं, जो वैकल्पिक की आवश्यकता होगी उनके FK क्षेत्रों (यूजर आईडी और PostId) के लिए भी अशक्त करने में सक्षम है. वे होने की संभावना कर रहे हैं नहीं optional.
मुख्य विकल्प यह पता करने के लिए:
एक) सुविधा को बंद करें. (अक्षम नल-सक्षम संदर्भ में परियोजना)
ख) पूछना "क्षमा" के लिए तथ्य यह है कि ये कभी नहीं होना चाहिए null, लेकिन नहीं किया जाएगा में एक वैध राज्य पर निर्माण. (एफई उन्हें प्रबंधन करेगा)
public class PostFile {
public Int32 UserId{ get; set; }
public Int32 PostId { get; set; }
public virtual User User { get; set; } = null!;
public virtual Post Post { get; set; } = null!;
}
फेरबदल के मॉडल को चिह्नित करने के लिए नेविगेशन गुण के रूप में नल-सक्षम संदर्भ पैदा होने की संभावना है समस्याओं के सभी प्रकार के साथ के रूप में, माइग्रेशन यह कर सकते हैं, और शुरू कर देंगे की जगह गैर-नल-कर fks बड़ा के साथ नल-सक्षम हैं. चिह्नित करने के लिए इन संदर्भों के रूप में नल-सक्षम और रखने एफई खुश:
public class PostFile {
public Int32? UserId{ get; set; }
public Int32? PostId { get; set; }
public virtual User? User { get; set; }
public virtual Post? Post { get; set; }
}
जो लगभग निश्चित रूप से नहीं क्या आप चाहते हैं कि आपके डोमेन में, या यहां तक कि कानूनी यदि यूजर आईडी और PostId का हिस्सा हैं एक पी.
व्यक्तिगत रूप से मैं कर रहा हूँ chalking में इस बदलाव के C# के रूप में एक "भूमि" मेरा एमएस में सक्षम शुरू में डिफ़ॉल्ट रूप से, इस तरह के रूप में ग्राहक के पक्ष में मूल्यांकन EF. :)
मैं उम्मीद में कई-एक-StackOverflow सवालों के आसपास इस चेतावनी या तोड़ने के परिवर्तन, और कई एक ग्राहक codebases से अटे पड़े "!" क्षमा टैग के रूप में बड़े गैर-नल-सक्षम वस्तुओं/सन्दर्भ में पारित कर रहे हैं कोड के साथ नल-सक्षम संदर्भ की जाँच करता है ।