使用实体框架sql在数据库中插入Null


private void BtnAdd_Click(object sender, EventArgs e)
{
Model.Item items = new Model.Item
{
Code = Convert.ToInt32(txtCode.Text),
Name = txtName.Text,
MQCode = Convert.ToInt32(string.IsNullOrEmpty(txtMinmumQuantityNo.Text) ? null :   txtMinmumQuantityNo.Text)
};
db.Items.Add(items);
db.SaveChanges();
}

错误

SqlException:INSERT语句与FOREIGN KEY约束"FK_Items_MQ"冲突。冲突发生在数据库"C:\USERS\20101\DESKTOP\SIMA V1\SIMA V1\BIN\DEBUG\SIMA.MDF",表"dbo.MQ",列"MQCode"中。语句已终止。

根据文档(链接如下(,当字符串参数为null时,Convert.ToInt32返回0。

因此,以下行将MQCode设置为0,这是MQCode的无效外键值。

MQCode = Convert.ToInt32(string.IsNullOrEmpty(txtMinmumQuantityNo.Text) ? null :   txtMinmumQuantityNo.Text)

考虑使用以下内容:

MQCode = string.IsNullOrEmpty(txtMinmumQuantityNo.Text) ? (int?)null : Convert.ToInt32(txtMinmumQuantityNo.Text)

这将返回一个null或一个整数。

https://learn.microsoft.com/en-us/dotnet/api/system.convert.toint32?view=netframework-4.8#系统转换到Int32_System_String_

看起来该字段不可为null。它必须具有实际值。

最新更新