繁体   English   中英

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

[英]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.SourceSafeVersionNum1

我在代码中找不到默认值的任何地方或任何类似的逻辑。

任何想法为什么/将此值设置为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM