Я пишу этот запрос LINQ to EF, чтобы получить соответствующий элемент.

if (user.UserID > 0)
{
    var TempUser = (from c in GSData.tblUsers
                    where c.UserID == user.UserID
                    select c).First();
                    ..........

Значение user.UserID во время выполнения - 579, и есть соответствующая строка. Однако я получаю сообщение об ошибке

{"This property cannot be set to a null value."}
System.Data.ConstraintException was unhandled by user code

Далее он неожиданно обрывается в том месте, где указано отчество. Это поле в базе данных tblUsers с nvarchar (20) и значением null.

 _MiddleName = StructuralObject.SetValidValue(value, false);

Однако я написал аналогичные запросы для получения совпадающих элементов, и они отлично работают. Я просто выбираю и не обновляю значения. Так что я ломал себе голову над тем, почему это происходит. Любые предложения приветствуются.

0
simba 24 Дек 2013 в 09:03
Где user.UserId?
 – 
Amit
24 Дек 2013 в 09:05
Объект пользователя передается функции, имеющей запрос. userid - это поле в пользовательском объекте
 – 
simba
24 Дек 2013 в 09:06
Если вы видите это при выборе, значит, ваши ограничения EF и базы данных не синхронизированы.
 – 
Carth
24 Дек 2013 в 09:07
@Carth. Я усомнился в этом и снова обновил модель из базы данных. Разве это не синхронизировало бы также ограничения EF и db? Я проверил модель EF сейчас. Свойства отчества такие же. допускает значение NULL и максимальная длина 20
 – 
simba
24 Дек 2013 в 09:08
1
В прошлом у меня были проблемы, когда «незначительные» изменения, такие как изменение длины типа данных, изменение не нулевых ограничений и т. Д., Не улавливались обновлением EF. В этих случаях мне приходилось редактировать EF вручную или перестраивать EF. Я хотел бы подтвердить, что он действительно вызывает ошибку из-за этого условия, а затем проверить сгенерированный EF код.
 – 
Carth
24 Дек 2013 в 09:11

1 ответ

Лучший ответ

Удалите таблицу в своей модели сущностей, затем выберите обновление из базы данных. EF не будет принимать изменения, допускающие / не допускающие значения NULL, просто обновляя уже существующую таблицу.

1
Cam Bruce 24 Дек 2013 в 09:17
Это устранило проблему. Спасибо!
 – 
simba
24 Дек 2013 в 09:27