Windows Phone - SqlCeException列类型为double

时间:2013-01-13 14:34:28

标签: windows-phone-7 sql-server-ce windows-phone windows-phone-8

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

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

  

SqlCeException - Column Pitch不能包含NULL值

音高是双重类型的列。只有当我使用CanBeNull = true加法扩展每个double和bool列的[Column]属性时,它才有效。

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

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

1 个答案:

答案 0 :(得分:1)

  

double和bool值存在问题

AFAIK的行为是设计的。

  

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

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

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