Почему этот запрос LINQ присваивает значение 1 пустому значению из базы данных? - PullRequest
3 голосов
/ 30 марта 2011

Класс 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, сгенерированный LINQ в SQL Server, значение столбца 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();
        }
    }
}

Ответы [ 2 ]

2 голосов
/ 30 марта 2011

Вы пытались установить точку останова в методе set{} свойства, чтобы посмотреть, что еще может заполнять его значение? Вы можете поймать виновника в действии, а затем взглянуть на стек вызовов, чтобы узнать, кто это.

0 голосов
/ 21 ноября 2011

Вслед за этим вот что произошло:

Код, который извлек значение из базы данных, вызывался дважды, но через два разных пути кода.Путь к коду, который присваивал значение 1, был перешаган отладчиком, поэтому я его не видел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...