我的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问题,随着需求的任何变化都可以很好地扩展!!! |
|
|
|
|
|