C# 如何使EF理解某些列不可为空?

C# 如何使EF理解某些列不可为空?,c#,sql,entity-framework,null,nullable,C#,Sql,Entity Framework,Null,Nullable,我定义了这张精致的桌子 create table WeirdDonkey ( Tails int not null, Heads int default 7 ) 当我在上面运行EF时,它会创建两个字段,如下所示 public int Tails { get; set; } public Nullable<int> Heads { get; set; } public int-Tails{get;set;} 公共可空磁头{get;set;} 现在,我明白了为什么它认为头的

我定义了这张精致的桌子

create table WeirdDonkey (
  Tails int not null,
  Heads int default 7
)
当我在上面运行EF时,它会创建两个字段,如下所示

public int Tails { get; set; }
public Nullable<int> Heads { get; set; }
public int-Tails{get;set;}
公共可空磁头{get;set;}
现在,我明白了为什么它认为头的数量是可以为空的,但这没有任何意义。驴子不可能有空脑袋。如果没有指定其他内容,它可以有7个。(好吧,从动物学的角度讲,这没有任何意义,但让我们假设我们在一个遵循我的SQL魔法规则的不同星球上)


我如何才能让EF理解默认值是7,并且不会有空头驴?

EF是正确的<代码>头可以有空值。如果在插入一行后,您决定将
Heads
值更新为
null
,会发生什么情况。数据库不会接受它吗?是的,会的

如果不需要空值,则必须明确定义为:

创建表格怪人(
Tails int不为空,
Heads int非空默认值7
)

EF是正确的<代码>头可以有空值。如果在插入一行后,您决定将
Heads
值更新为
null
,会发生什么情况。数据库不会接受它吗?是的,会的

如果不需要空值,则必须明确定义为:

创建表格怪人(
Tails int不为空,
Heads int非空默认值7
)

为列指定默认值并不会阻止它更新为空值。EF是正确的,请参见。您可以轻松地插入
NULL
。为列指定默认值并不会阻止它更新为NULL值。请参阅。你可以很容易地插入
NULL
。哦,太愚蠢了。。。我完全错过了。您认为不为null或添加约束更明智吗?前者似乎更容易,所以我更喜欢这样。但是“更容易”通常会变成“不那么长期”…
notnull
是一种约束。所以是的,只需使用
notnull
。没有必要使用更详细的语法。哦,太愚蠢了。。。我完全错过了。您认为不为null或添加约束更明智吗?前者似乎更容易,所以我更喜欢这样。但是“更容易”通常会变成“不那么长期”…
notnull
是一种约束。所以是的,只需使用
notnull
。没有必要使用更详细的语法。