0

我有一个基本实体和 3 个继承的子实体,称为 NoteItem、ImageItem 和 MapItem。基实体类标有 [InheritanceMapping] 属性并具有鉴别器列。一切正常,除了第三个 MapItem 实体,它包含 4 列类型为 double 和 bool。

例如,如果我插入一个 NoteItem 实体,它会抛出一个异常:

SqlCeException - 列间距不能包含 NULL 值

间距是双列型。仅当我使用 CanBeNull = true 添加扩展每个双精度和布尔列的 [Column] 属性时,它才有效。

在我看来,double 和 bool 值存在问题,因为 string 类型的列不能明确包含 CanBeNull 添加。

这是一个已知问题还是我错了?

4

1 回答 1

1

double 和 bool 值有问题

AFAIK 行为是设计使然。

字符串类型的列不得显式包含 CanBeNull 添加

字符串 CLR 值可以为空,因此如果没有[Column( CanBeNull = false )]指定属性,实体框架会生成可以为空的列。OTOH、bool 和 double 值不能为空,如果要允许空值,则必须指定[Column( CanBeNull = true )]

如果您不想用属性装饰您的 double 和 bool 属性/字段[Column],您可以例如将它们分别定义为double?和。bool?

于 2013-01-13T18:17:01.240 回答