所以我在这里有一个奇怪的困境。我的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但未在用户代码中处理 信息:' ZipCode'物业公司'无法设置为 '空'值。您必须将此属性设置为类型的非null值 ' System.Int32'
任何人都可以想到为什么会这样做?我检查并仔细检查了我的数据库项目和我的本地数据库,它们都匹配。我的所有单元测试都通过了,所以我在这里几乎不知所措。
任何帮助将不胜感激!
答案 0 :(得分:5)
您在C#Entity Framework中的属性显然是:
public int ZipCode;
您必须将其更改为
public Nullable<int> ZipCode;
您也可以在实体框架的edmx文件的可视化编辑器的属性窗口中执行此操作。
<强>更新强>
将ZipCode的类型更改为字符串也是可取的(如果可能)。它不仅会照顾当前可空的“可空白”。问题,但随着要求的进一步变化,也会很好地扩展!!
答案 1 :(得分:1)
你可以用作
public int? ZipCode;
它意味着Nullable