【发布时间】:2017-04-06 14:41:11
【问题描述】:
处理依赖于旧版本实体的应用程序,我正在尝试将NULL 插入int 字段。 SQL Server 中的字段是(int, null)。
这是 EF 中对象的定义:
<EdmScalarPropertyAttribute(EntityKeyProperty:=false, IsNullable:=true)>
<DataMemberAttribute()>
Public Property application_id() As Nullable(Of Global.System.Int32)
...这是我要设置的地方:
applications.application_id = IIf(IsNumeric(txtAppID.Text), CInt(txtAppID.Text), Nothing)
响应中抛出的错误是:
“System.InvalidCastException”类型的异常发生在...中,但未在用户代码中处理
附加信息:指定的演员表无效。
我可以确认这个问题是由于 Nothing 部分而引发的,因为之前它是 applications.application_id = CInt(txtAppID.Text) 并且一切都很好。
我试过DBNull.Value 而不是Nothing,尽管错误读取相同。尽管大多数问题都与 ES6 或 datetime 字段相关,但我还是做了一些研究,因此我觉得我的问题足够具体,可以提出自己的问题。
谢谢。
【问题讨论】:
-
更改代码以便仅在记录中添加数值,即:
If IsNumeric(txtAppID.Text) Then applications.application_id = CInt(txtAppID.Text) -
@LaughingVergil 我应该提到这也用于更新。使用该方法意味着用户无法删除应用程序 ID,因为如果他们清空该字段并更新,
applications.application_id将不会被设置。
标签: sql-server vb.net entity-framework