微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我的SQL表设置为允许该列为NULL,但是当我运行它时,它说它不能为NULL什么/为什么/如何?

如何解决我的SQL表设置为允许该列为NULL,但是当我运行它时,它说它不能为NULL什么/为什么/如何?

您在C#实体框架中的属性显然是:

public int ZipCode;

您必须将其更改为

public Nullable<int> ZipCode;

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

建议(如果可能)将ZipCode的类型更改为字符串。 它不仅可以解决当前的“ nullable”问题,而且随着需求的任何变化都可以很好地扩展!!!

解决方法

所以我在这里有很奇怪的困境。我的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’类型的非空值。

谁能想到这样做的原因吗?我检查并仔细检查了数据库项目和本地数据库,它们都匹配。而且我所有的单元测试都通过了,所以我在这里很茫然。

任何帮助,将不胜感激!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。