为什么此LINQ查询将值1分配给数据库中的NULL值?

时间:2011-03-30 15:30:16

标签: sql linq linq-to-sql

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文件生成)

1

2 个答案:

答案 0 :(得分:2)

您是否尝试在属性的set{}方法中设置断点,以查看可能填充其值的其他内容?您可能会在行为中找到罪魁祸首,然后查看调用堆栈,看看它是谁。

答案 1 :(得分:0)

作为后续行动,以下是发生的事情:

从数据库中检索值的代码被调用两次,但是通过两个不同的代码路径。分配值1的代码路径正由调试器转发,所以我没有看到它。