C# LINQ到SQL关联引发空异常

C# LINQ到SQL关联引发空异常,c#,linq-to-sql,C#,Linq To Sql,我有一个由LINQtoSQL生成的Person类,它具有Rota类的Rota关联属性 但是,当尝试访问Person上的Rota属性时(例如调用db.People.First().Rota),会在生成的LINQ to SQL类的属性中抛出NullReferenceException: get { return this._Rota.Entity; } 在Person的构造函数中将\u Rota字段设置为默认值(EntityRef) 当我在VisualStudio中将鼠标悬停在Person

我有一个由LINQtoSQL生成的Person类,它具有Rota类的Rota关联属性

但是,当尝试访问Person上的Rota属性时(例如调用
db.People.First().Rota
),会在生成的LINQ to SQL类的属性中抛出
NullReferenceException

get
{
    return this._Rota.Entity;
}
在Person的构造函数中将
\u Rota
字段设置为
默认值(EntityRef)

当我在VisualStudio中将鼠标悬停在Person实例上时,数据提示会显示Rota属性已存在且已正确填充。我不明白为什么它没有在代码中被初始化

我已经尝试重新生成生成的代码,其他关联也可以正常工作


提前感谢

最终找到了原因

在Rota对象的onload方法中,我试图将一个对象添加到一个尚未初始化的列表中(duh)。列表是rota对象的成员

很明显,这会让一切都变得繁荣起来,但它把错误扔到了一个奇怪的地方,这使得调试变得很困难

自定义加载的代码中抛出的任何错误都将在第一次访问实体的行上抛出(至少在延迟加载的实体中)。我能更容易地调试这个吗



编辑:我可能无法更轻松地对此进行调试,因为我的onload()方法是从LINQ调用到SQL的外部代码的,因此打破了调用堆栈?

最终找到了导致这种情况的原因

在Rota对象的onload方法中,我试图将一个对象添加到一个尚未初始化的列表中(duh)。列表是rota对象的成员

很明显,这会让一切都变得繁荣起来,但它把错误扔到了一个奇怪的地方,这使得调试变得很困难

自定义加载的代码中抛出的任何错误都将在第一次访问实体的行上抛出(至少在延迟加载的实体中)。我能更容易地调试这个吗



Edit:我想我调试起来再简单不过了,因为我的onload()方法是从LINQ调用到SQL的外部代码的,因此打破了调用堆栈?

根据你上面的帖子,我猜这可能不是确切的答案,但我想建议您需要确保一个人的Rota甚至在同一时间被检索(默认情况下不会被检索)。您需要进行配置


至于about-onload,只有在数据加载到它之后才会调用它,也就是说,当通过SELECT而不是“延迟加载”检索数据时。也许您想改为使用OnCreated partial方法中提到的这段代码?这是在实例化(并因此加载)和反序列化时调用的。

根据您上面的帖子,我想这可能不是确切的答案,但我想建议您需要确保一个人的Rota甚至在同一时间被检索(默认情况下不会被检索)。您需要进行配置

至于about-onload,只有在数据加载到它之后才会调用它,也就是说,当通过SELECT而不是“延迟加载”检索数据时。也许您想改为使用OnCreated partial方法中提到的这段代码?这在实例化(从而加载)和反序列化时调用