Linq对SQL Server执行查询后,对象的属性何时设置?
ExamVersion类的以下属性是由LINQ to SQL Classes(.dbml)文件生成的。
[Column(Storage="_SourceSafeVersionNum", DbType="Int", UpdateCheck=UpdateCheck.Never)]
public System.Nullable<int> SourceSafeVersionNum
{
get
{
return this._SourceSafeVersionNum;
}
set
{
if ((this._SourceSafeVersionNum != value))
{
this.OnSourceSafeVersionNumChanging(value);
this.SendPropertyChanging();
this._SourceSafeVersionNum = value;
this.SendPropertyChanged("SourceSafeVersionNum");
this.OnSourceSafeVersionNumChanged();
}
}
}
执行此LINQ查询后:
var query = from examVersion in db.ExamVersions
where examVersion.ExamVersionID == ExamVersionID
select examVersion;
return query.ToList();
LINQ何时/何地设置SourceSafeVersionNum属性?
我在setter上放置了一个断点,但在调试过程中从不调用它。没有构造函数设置此值。
答案 0 :(得分:2)
Linq to sql类继承自核心对象,具体取决于您是否使用EF或linq来使用代理类来填充。
您是否尝试过更改私有属性“_SourceSafeVersionNum”以获取get和set,然后断开私有底层变量?公共设置器适用于应用程序设置变量以便跟踪更改时。如果在从DB填充时使用它们,则所有属性都会在加载时触发OnPropertyChanged。
答案 1 :(得分:1)
假设SourceSafeVersionNum
是ExamVersions
的属性,则应在查询和实现查询结果时将其设置为:
return query.ToList();
当然,如果查询结果为空列表,则不会设置该属性,因为没有对象可以设置它。