[英]Why does this LINQ query assign a value of 1 to a NULL value from the database?
ExamVersion
类有一个int?
名为SourceSafeVersionNum
属性
当我执行以下代码时:
var query = from examVersion in db.ExamVersions
where examVersion.ExamVersionID == ExamVersionID
select examVersion;
foreach (ExamVersion examVer in query.ToList())
{
yield return examVer;
}
examVer.SourceSafeVersionNum
设置为1
即使它在数据库中为NULL
。
当我在SQL Server中运行LINQ生成的SQL代码时, SourceSafeVersionNum
列值为NULL
(正如我所期望的那样),但在foreach循环中, examVer.SourceSafeVersionNum
为1
。
我在代码中找不到默认值的任何地方或任何类似的逻辑。
任何想法为什么/将此值设置为1
?
这是属性声明(由.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();
}
}
}
您是否尝试在属性的set{}
方法中设置断点,以查看还可以填充其值的其他内容? 您可能会抓住该行为的罪魁祸首,然后查看调用堆栈以查看它是谁。
作为后续行动,以下是发生的事情:
从数据库中检索值的代码被调用两次,但是通过两个不同的代码路径。 分配值1的代码路径正由调试器转发,所以我没有看到它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.