Cassandra Mapper:无法插入可空类型

时间:2015-06-16 13:25:15

标签: c# cassandra

我正在尝试使用IMapper插入具有可空类型的POCO(如DateTime?LastAccessed),但是获得了一个异常说明:

   Nullable object must have a value.

StackTrace是:

   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)有一个值,它不是可以为空的类型(当然)..

为什么我不能插入指定我需要的所有列?

1 个答案:

答案 0 :(得分:2)

首先,Cassandra并没有很好地处理空值。插入空值实际上会为该列创建一个逻辑删除。因此,如果可能的话,最好避免这样做。

其次,驱动程序文档的CQL data types to C# types部分与DateTime(更不用说DateTime?)不匹配。你想把它映射到卡桑德拉的时间戳吗?如果是这样,您将需要使用DateTimeOffset类型,并且它不能为空。