所以我在这里遇到了很奇怪的困境。我的 SQL 表设置为允许 ZipCode 列为空,如下所示:
CREATE TABLE [dbo].[Companies]
(
[CompanyId] BIGINT IDENTITY(1,1) NOT NULL PRIMARY KEY,
[Name] NVARCHAR(100) NOT NULL,
[Address] NVARCHAR (100) NULL,
[City] NVARCHAR (50) NOT NULL,
[State] NVARCHAR (2) NOT NULL,
[ZipCode] INT NULL,
[PhoneNum] BIGINT NULL,
[CreatedDate] DATETIME2 NOT NULL DEFAULT GetDate()
)
这应该让我将 ZipCode 的值设置为 NULL,对吧?嗯,显然不是……
我不断收到此错误:
发生“System.Data.ConstraintException”类型的异常
EntityFramework.dll 但未在用户代码中处理
信息:“公司”的“邮政编码”属性无法设置为
“空”值。您必须将此属性设置为类型的非空值
'系统.Int32'。
谁能想到这样做的任何原因吗?我已经检查并仔细检查了我的数据库项目和本地数据库,它们都匹配。我所有的单元测试都通过了,所以我在这里几乎不知所措。
任何帮助,将不胜感激!
您在 C# 实体框架中的属性显然是:
public int ZipCode;
你必须将其更改为
public Nullable<int> ZipCode;
您还可以在实体框架的 edmx 文件的可视化编辑器的属性窗口中执行此操作。
UPDATE:
还建议(如果可能)将 ZipCode 的类型更改为字符串。它不仅可以解决当前的“可为空”问题,而且还可以随着需求的任何变化而很好地扩展!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)