所以我在这里有很奇怪的困境。我的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’类型的非空值。
谁能想到这样做的原因吗?我检查并仔细检查了数据库项目和本地数据库,它们都匹配。而且我所有的单元测试都通过了,所以我在这里很茫然。
任何帮助,将不胜感激!
您在C#实体框架中的属性显然是:
public int ZipCode;
您必须将其更改为
public Nullable<int> ZipCode;
您也可以在实体框架的edmx文件的可视编辑器的属性窗口中执行此操作。
更新:
建议(如果可能)将ZipCode的类型更改为字符串。 它不仅可以解决当前的“ nullable”问题,而且随着需求的任何变化都可以很好地扩展!!!