मैं एक State
की List<State>
इकाई वस्तुओं है, और प्रत्येक State
वस्तु अन्य वस्तुओं का संग्रह है, इस तरह के Licenses
, Taxes
, Bonds
, के रूप में आदिमुझे System.Data.Entity.dll (इकाई फ्रेमवर्क) में NullReferenceException क्यों मिल रहा है?
वहाँ भी ExpiredObjects
के लिए एक संग्रह है, जो किसी भी वस्तु है जो की एक सूची है समाप्त हो गया और नवीनीकृत करने की जरूरत है। किसी कारण से, यह संपत्ति मुझे NullReferenceException
दे रही है जब मैं इसे एक विशिष्ट स्थिति (नेवादा) के लिए कोशिश करता हूं और एक्सेस करता हूं, लेकिन मैं अपने जीवन के लिए वास्तव में null
क्या नहीं देख सकता क्योंकि मुझे कोई null
मान नहीं दिख रहा है कहीं भी।
मेरा कोड यहां अपवाद फेंकता है। यह सभी राज्यों के माध्यम से loops, और सभी ExpiredObjects
एक दृश्य-विशिष्ट संग्रह में प्रदर्शित होता है जो प्रदर्शित हो जाता है। मेरे परीक्षण कोड अभी भी शामिल किया गया है
private List<ExpiredObject> LoadAllExpiredObjects()
{
var list = new List<ExpiredObject>();
foreach (var state in States)
{
// This tells me the state is not null, and neither is state.ExpiredObjects
Debug.WriteLine(string.Format("{0}|{1}|{2}",
state.Name, state == null, state.ExpiredObjects == null));
try
{
var x = state.ExpiredObjects;
Debug.WriteLine(x == null);
// Exception occurs on the "for" line on the Nevada state only
// Contents in for loop do not execute
foreach (var item in x)
{
Debug.WriteLine(string.Format("{0}", item));
list.Add(item);
}
// This used to be the only line of code before I started testing
// It fails on Nevada
//list.AddRange(state.ExpiredObjects);
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
Debug.WriteLine(ex.StackTrace);
}
}
return list;
}
त्रुटि के स्टैक ट्रेस यह है:
A first chance exception of type 'System.NullReferenceException' occurred in System.Data.Entity.dll
Object reference not set to an instance of an object.
at System.Data.EntityKey.AddHashValue(Int32 hashCode, Object keyValue)
at System.Data.EntityKey.GetHashCode()
at System.Collections.Generic.GenericEqualityComparer`1.GetHashCode(T obj)
at System.Collections.Generic.Dictionary`2.FindEntry(TKey key)
at System.Collections.Generic.Dictionary`2.TryGetValue(TKey key, TValue& value)
at System.Data.Objects.ObjectStateManager.TryGetEntityEntry(EntityKey key, EntityEntry& entry)
at System.Data.Common.Internal.Materialization.Shaper.HandleEntityAppendOnly[TEntity](Func`2 constructEntityDelegate, EntityKey entityKey, EntitySet entitySet)
at lambda_method(Closure , Shaper)
at System.Data.Common.Internal.Materialization.Coordinator`1.ReadNextElement(Shaper shaper)
at System.Data.Common.Internal.Materialization.Shaper`1.SimpleEnumerator.MoveNext()
at System.Data.Objects.DataClasses.RelatedEnd.Merge[TEntity](IEnumerable`1 collection, MergeOption mergeOption, Boolean setIsLoaded)
at System.Data.Objects.DataClasses.EntityCollection`1.Load(List`1 collection, MergeOption mergeOption)
at System.Data.Objects.DataClasses.EntityCollection`1.Load(MergeOption mergeOption)
at System.Data.Objects.DataClasses.RelatedEnd.Load()
at System.Data.Objects.DataClasses.RelatedEnd.DeferredLoad()
at System.Data.Objects.DataClasses.EntityCollection`1.GetEnumerator()
at MyNamespace.StatesViewModel.LoadAllExpiredObjects() in C:\Users\me\Desktop\MySolution\StatesViewModel.cs:line 217
मैं भी ठीक उसी त्रुटि जब मैं नेवादा का चयन करके उसे ExpiredObjects
करने के लिए एक DataGrid
बाध्य करने की कोशिश करता है मिल संग्रह (यदि मैं बाध्यकारी टिप्पणी करता हूं, तो कोड ठीक काम करता है)
क्या किसी को पता है कि यह त्रुटि क्या हो सकती है?
यदि यह नेवादा के लिए ही है उसे वे लोग, डेटा समस्या होना चाहिए DB में एक संपूर्ण जांच। –
@ हेनकहोल्टरमैन क्षमा करें, मुझे यकीन नहीं था कि कौन सी जानकारी प्रासंगिक थी। यह डीबी-पहला था। सभी ऑब्जेक्ट्स ('स्टेट', 'लाइसेंस',' कर', इत्यादि) में अपनी खुद की डेटाबेस टेबल है जो उन्हें जोड़ने वाली विदेशी कुंजी के साथ है। उनके पास अपनी प्राथमिक कुंजी भी होती है, और कुछ भी विरासत में नहीं मिलता है। मैं अब डेटा देख रहा हूं - यकीन नहीं है कि मैंने – Rachel
@ हेनकहोल्टरमैन से पहले ऐसा क्यों नहीं किया था, आप सही हैं, समस्या डेटा में थी। मेरी प्रक्रिया जिसने समाप्त की गई वस्तुओं को खींच लिया था, उन क्षेत्रों में से एक के लिए 'शून्य' मान लौटा रहा था जो ईएफ में चिह्नित नहीं था, इसलिए जब भी वह डेटाबेस से उस ऑब्जेक्ट को प्राप्त करने का प्रयास करता था, तो यह एक त्रुटि फेंक देगा। धन्यवाद, और यदि आप इसे उत्तर के रूप में पोस्ट करते हैं तो मैं इसे स्वीकार करूंगा :) – Rachel