2015-06-16 60 views
-1

我試圖插入一個POCO可空類型的使用IMapper,但得到一個異常說明(如日期時間上次訪問?):卡桑德拉映射:不能插入空類型

Nullable object must have a value. 

堆棧跟蹤是:

at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource) 
    at lambda_method(Closure , UserEntity`1) 
    at Cassandra.Mapping.Mapper.InsertIfNotExistsAsync[T](T poco, CqlQueryOptions queryOptions) 
    at Cassandra.Mapping.Mapper.InsertIfNotExists[T](T poco, CqlQueryOptions queryOptions) 
    ...(my function) 

爲表(一個ID)的主鍵有一個值,它不是可空類型(當然)..

我爲什麼可以插入不指定我需要的所有列?

回答

2

首先,卡桑德拉處理不好與空值。插入空值實際上爲該列創建了一個邏輯刪除。所以最好儘可能避免這樣做。

其次,驅動程序文檔的CQL data types to C# types部分沒有匹配DateTime(更不用說DateTime?)。你想把它映射到卡桑德拉的時間戳嗎?如果是這樣,您將需要使用DateTimeOffset類型,並且它不能爲空。

+0

關於DateTime - 我錯過了它,所以謝謝你。其次,我知道有關空值。這就是爲什麼我希望IMapper能夠處理可空類型的原因。我想我只需要使用INSERT的核心語句,而不指定我不需要的列(少數那些)。 – Droritos