2015-06-16 31 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