0

我有一個基本實體和3個繼承的子實體,名爲NoteItem,ImageItem和MapItem。基礎實體類用[InheritanceMapping]屬性標記並具有Discriminator列。一切工作正常,除了第三個MapItem實體,其中包含4列的類型雙和布爾。Windows Phone - SqlCeException列類型雙重

例如,如果我插入一個NoteItem實體,將拋出一個異常:

SqlCeException - 列間距不能包含空值

間距爲雙類型列。只有當我擴展了CanBeNull = true的每個double和bool列的[Column]屬性時,它纔有效。

這在我看來,有雙和布爾值的問題,因爲有型弦一柱不能明確地包含CanBeNull增加。

這是一個已知的問題還是我錯了?

回答

1

有雙和一個布爾值問題

AFAIK行爲是由設計。

型串中的列必須沒有明確包含CanBeNull加成

的字符串CLR值可以爲空,因此無指定[Column(CanBeNull = false)]屬性,實體框架生成可以爲空欄。 OTOH,布爾和雙值不能爲空,如果你想允許空值時,必須指定[Column(CanBeNull = true)]

如果你不想[Column]屬性來裝飾你的雙和布爾屬性/域,你可以如將它們分別定義爲double?bool?

+0

這正是我所需要的!問號是否?間接將[Column]屬性CanBeNull設置爲true或它如何工作? –

+0

問號將您的字段/屬性類型從雙倍變爲「雙倍?」這是System.Nullable 的簡寫形式。它會影響讀取這些字段/屬性值的代碼。 – Soonts

+0

好的,謝謝! :) –