我有一个基本实体和3个继承的子实体,名为NoteItem,ImageItem和MapItem。基本实体类使用[InheritanceMapping]属性标记,并具有Discriminator列。一切正常,除了第三个MapItem实体,它包含4列double和bool类型。
例如,如果我插入一个NoteItem实体,它将抛出异常:
SqlCeException - Column Pitch不能包含NULL值
音高是双重类型的列。只有当我使用CanBeNull = true加法扩展每个double和bool列的[Column]属性时,它才有效。
在我看来,double和bool值存在问题,因为类型为string的列不能显式包含CanBeNull添加。
这是一个已知问题还是我错了?
答案 0 :(得分:1)
double和bool值存在问题
AFAIK的行为是设计的。
具有类型字符串的列不得显式包含CanBeNull添加
字符串CLR值可以为null,因此在未指定[Column( CanBeNull = false )]
属性的情况下,实体框架会生成可以为null的列。 OTOH,bool和double值不能为null,如果要允许空值,则必须指定[Column( CanBeNull = true )]
如果您不想使用[Column]
属性修饰double和bool属性/字段,则可以例如将它们分别定义为double?
和bool?
。