0

基本エンティティと、NoteItem、ImageItem、および MapItem と呼ばれる 3 つの継承されたサブエンティティがあります。基本エンティティ クラスは [InheritanceMapping] 属性でマークされ、Discriminator 列があります。double 型と bool 型の 4 つの列を含む 3 番目の MapItem エンティティを除いて、すべて正常に動作します。

たとえば、 NoteItem エンティティを挿入すると、例外がスローされます。

SqlCeException - 列ピッチに NULL 値を含めることはできません

ピッチはダブルタイプのコラムです。CanBeNull = true を追加して各 double および bool 列の [Column] 属性を拡張した場合にのみ、機能します。

文字列型の列には CanBeNull の追加を明示的に含めてはならないため、double 値と bool 値に問題があるように思えます。

これは既知の問題ですか、それとも間違っていますか?

4

1 に答える 1

1

double値とbool値に問題があります

AFAIKの動作は仕様によるものです。

文字列型の列には、CanBeNull加算を明示的に含めることはできません

文字列CLR値はnullになる可能性があるため、[Column( CanBeNull = false )]属性が指定されていない場合、エンティティフレームワークはnullになる可能性のある列を生成します。OTOH、bool、およびdoubleの値をnullにすることはできません。nullを許可する場合は、次のように指定する必要があります。[Column( CanBeNull = true )]

doubleプロパティとboolプロパティ/フィールドを属性で装飾したくない場合は、たとえば、それぞれと[Column]として定義できます。double?bool?

于 2013-01-13T18:17:01.240 に答える