Я использую EF 6.2.0, Code First from Database, в среде. net 4.5.2. У меня есть этот DbSet:
<Table("Firebird.PLANT4")>
Partial Public Class PLANT4
<Key>
<DatabaseGenerated(DatabaseGeneratedOption.None)>
Public Property ID_PLANT4 As Integer
Public Property STATUS As Integer
<Required>
<StringLength(20)>
Public Property DESCRIPTION1 As String
Public Property COUNTER As Long
Public Property RESET_COUNTER As Integer
End Class
Когда я выполняю этот код:
Using dbContext As New DbModel
dbContext.Database.Connection.ConnectionString = GetFbConnectionString()
dbContext.Database.Connection.Open()
Dim plant As PLANT4 = dbContext.PLANT4.Find(1)
plant.RESET_COUNTER = 1
dbContext.SaveChanges()
End Using
Я получаю сообщение об ошибке: «Поле DESCRIPTION1 обязательно для заполнения». Исключением является выбрасывание во время SaveChanges. Я не могу понять, в чем проблема, как будто я наблюдаю «завод» в отладке, там есть все поля (ID_PLANT4 = 1 - существующая строка), и, в частности, DESCRIPTION1 - это не «Ничто».
Я могу просто удалите атрибут «Обязательный», и он работает, но этот атрибут является следствием того, что столбец db не допускает нулевые значения, поэтому я не думаю, что это правильный путь к go.
Я могу даже добавьте эту строку кода сразу после выражения «Using»:
dbContext.Configuration.ValidateOnSaveEnabled = False
, и это работает, но опять же я не думаю, что это правильный путь к go.
В чем причина такого поведения?