为了账号安全,请及时绑定邮箱和手机立即绑定

C# DataStax 驱动程序中的 CassandraEntityBase

C# DataStax 驱动程序中的 CassandraEntityBase

C#
慕桂英4014372 2023-09-16 16:12:58
我有一个 .net core 应用程序,它通过 DataStax 驱动程序将数据保存到 Cassandra 实例。我的 Cassandra 实体有一个基类。现在,如果我想将 TimeUUID 类型 id 放入此基类中,则在插入时会收到错误:Some partition key parts are missing: id同样的方法也适用于 EntityFramework。而且问题不在于我的表、连接或键空间,因为当我将 id 字段带回实体本身时,它就可以工作了。我的插入方法public void Insert<T>(T entity) where T : EntityBase{    _mapper.Insert(entity);}我的基础班public class EntityBase{    [Column(name: "id")]    public  TimeUuid Id { get; private set; } = TimeUuid.NewId();}继承基类的实体类[Table(Keyspace = "unimportant", Name = "irrelevant")]public class Irrelevant : EntityBase{    //fields}你能告诉我有什么问题吗?有没有办法声明 CassandraEntityBaseClass ?
查看完整描述

1 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

找到了。这是故意的。在PocoDataFactory.cs第 102 行我找到了它:

return t.GetTypeInfo().GetProperties(PublicInstanceBindingFlags).Where(p => p.CanWrite);

什么是 CanWrite ?

获取一个值,该值指示该属性是否可写入。

由于我的财产是只读的

public  TimeUuid Id { get; private set; } = TimeUuid.NewId();

我重写了我的代码(仅用于测试)如下并且它有效:

public  TimeUuid Id { get; set;}

现在,我将选择在存储库或对象存储库插入期间设置我的属性。


查看完整回答
反对 回复 2023-09-16
  • 1 回答
  • 0 关注
  • 82 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信