所以我在这里遇到了很奇怪的困境。我的 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,对吗?好吧,显然不是....
我一直收到这个错误:
An exception of type 'System.Data.ConstraintException' occurred in EntityFramework.dll but was not handled in user code Additional information: The 'ZipCode' property on 'Company' could not be set to a 'null' value. You must set this property to a non-null value of type 'System.Int32'.
谁能想出这样做的任何原因?我检查并仔细检查了我的数据库项目和本地数据库,它们都匹配。我所有的单元测试都通过了,所以我在这里几乎不知所措。
如有任何帮助,我们将不胜感激!
最佳答案
您在 C# Entity Framework 中的属性显然是:
public int ZipCode;
你必须把它改成
public Nullable<int> ZipCode;
您也可以在 Entity Framework 的 edmx 文件的可视化编辑器的属性窗口中执行此操作。
更新:
还建议(如果可能)将 ZipCode 的类型更改为字符串。它不仅可以解决当前的“可空”问题,而且还可以很好地适应 future 需求的任何变化!
关于c# - 我的 SQL 表设置为允许此列为 NULL,但是当我运行它时,它说它不能为 NULL。什么/为什么/如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24192830/