回答

收藏

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

技术问答 技术问答 233 人阅读 | 0 人回复 | 2023-09-12

所以我在这里有奇怪的困境。SQL允许设置表ZipCode列为空,如下所示:
" D! P. N/ M1 z  }  r4 y) gCREATE 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,对吧?好吧,显然不是。
2 U" {5 H. A+ `2 d8 ?( Y3 d我一直收到这个错误:
( v. B2 s7 M3 c0 uEntityFramework.dll中发生类型’System.Data.ConstraintException’用户代码未处理异常。其他信息:’Company’的’ZipCode’属性不能设置为’null’值。您必须将此属性设置为’System.Int32’非空值类型。
8 t9 v3 |, N: y5 Q
谁能想到这样做的原因?我检查并仔细检查了数据库项目和当地数据库,它们都匹配。我所有的单元测试都通过了,所以我在这里感到困惑。
8 ^9 E5 u. v3 l; z任何帮助都将不胜感激!
2 Z5 r9 z7 Y6 |: U- |% N, i                                                                + Q% ]9 T" \' E
    解决方案:                                                                + L: R3 k7 x  z- h' ?" W
                                                                您在C#实体框架中的属性显然是:+ [) K! X% `  F2 {- A
public int ZipCode;您必须将其更改为
- U# b/ D0 o5 G  hpublic Nullable<i> ZipCode;你也可以在实体框架中edmx在文件的可视编辑器属性窗口中执行此操作。
7 O! R. }( P4 ~5 n- k4 D+ L更新:/ Q: z" I0 c. x7 v* a! U
建议(如有可能)ZipCode将类型改为字符串。它不仅可以解决当前的问题nullable问题,随着需求的任何变化都可以很好地扩展!!!
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则