在我的应用程序中,我正在从列表中创建可观察的集合。
List是我的数据库表的集合。
列表显示正确的结果,但是当我创建可观察的集合时,它给出了Exception as
Object reference not set to an instance of an object
。
当我用大型数据库运行我的应用程序时,这种情况有时会发生。对于小型数据库,它可以正常工作。
代码:
var list = db.Contacts.ToList();
ObservableCollection collection = new ObservableCollection(list);
例外:
对象引用未设置为对象的实例
堆栈跟踪
at System.Data.Linq.IdentityManager.StandardIdentityManager.InsertLookup(MetaType type, Object instance)
at System.Data.Linq.CommonDataServices.InsertLookupCachedObject(MetaType type, Object instance)
at System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReaderBase`1.InsertLookup(Int32 iMetaType, Object instance)
at Read_Contact(ObjectMaterializer`1 )
at System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext()
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.OrderedEnumerable`1.<GetEnumerator>d__0.MoveNext()
at System.Collections.ObjectModel.ObservableCollection`1.CopyFrom(IEnumerable`1 collection)
at System.Collections.ObjectModel.ObservableCollection`1..ctor(IEnumerable`1 collection)
目标网站
{System.Object InsertLookup(System.Data.Linq.Mapping.MetaType, System.Object)}
我做错了什么? Thanx提前
修改
以上只是我代码的一小部分。在我的实际代码中,我使用UnitOfWork和Repository Pattern。为了调试问题,我试图通过foreach
循环打印所有ID实体。
foreach (var item in _uow.Contacts.Query(q => !q.ContactID.Equals(1)))
{
i = item.ContactID;
}
但是在一些25534(每次我得到的随机数字)之后突然,_uow.Contacts.Query(q => !q.ContactID.Equals(1)
无法获得下一个元素。换句话说,不执行Enumerator.MoveNext()。当然,这可能是下一个元素是null
,但事实并非如此。我添加了一个Watch to list来确认它。
答案 0 :(得分:0)
在此代码中,db
或Tables
为null
。
var list = db.Tables.ToList();
请务必先检查:
if (db != null && ds.Tables != null)
{
var list = db.Tables.ToList();
}