3

所以我在这里遇到了很奇怪的困境。我的 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,对吧?嗯,显然不是……

我不断收到此错误:

EntityFramework.dll 中出现“System.Data.ConstraintException”类型的异常,但未在用户代码中处理附加信息:“Company”上的“ZipCode”属性无法设置为“null”值。您必须将此属性设置为“System.Int32”类型的非空值。

谁能想到为什么会这样做?我检查并仔细检查了我的数据库项目和本地数据库,它们都匹配。而且我所有的单元测试都通过了,所以我在这里几乎不知所措。

任何帮助,将不胜感激!

4

2 回答 2

6

您在 C# Entity Framework 中的属性显然是:

public int ZipCode;

您必须将其更改为

public Nullable<int> ZipCode;

您也可以在实体框架的 edmx 文件的可视化编辑器的属性窗口中执行此操作。

更新:

还建议(如果可能)将 ZipCode 的类型更改为字符串。它不仅可以解决当前的“可空”问题,而且还可以很好地适应未来需求的任何变化!

于 2014-06-12T19:52:31.763 回答
2

你可以用作

public int? ZipCode;

这意味着可以为空

于 2018-02-14T11:06:24.683 回答