当前位置: 首页 > 知识库问答 >
问题:

卡桑德拉实体库 in C# DataStax 驱动程序

宁良平
2023-03-14

我有一个. net核心应用程序,它通过DataStax驱动程序将数据持久化到Cassandra实例。

我为我的Cassandra实体创建了一个基类。现在,如果我想把我的TimeUUID类型ID放入这个基类,当插入时,我得到错误:

Some partition key parts are missing: id

同样的方法在EntityFramework中也适用。问题也不在于我的表、连接或键空间,因为当我将id字段返回到entty本身时,它就起作用了。

我的插入方法

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个答案

林弘文
2023-03-14

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

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

什么是Canwrite?

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

来源:PropertyInfo。CanWrite属性

因为我的财产是只读的

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

我重新编写了我的代码(仅用于测试),如下所示,它成功了:

public  TimeUuid Id { get; set;}

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

 类似资料:
  • 如果我们提供一个基于google cloud managed instance group概念的虚拟机,如何将新的虚拟机添加到集群中。 谢谢,

  • 我使用的是spring数据cassandra,需要使用jpa映射一个字段,在cassandra中,该字段的类型为

  • 我们运行的cassandra集群有3个节点,复制因子为2。 我们的nodejs服务器是查询这个集群的唯一地方。 是否有其他任何地方的参数设置可能导致不一致的查询? cassandra v2.2.4 nodejs驱动程序v3.0.0 编辑-添加我正在做的事情的示例: 1)检查用户名是否被占用 2)创建用户

  • 我们一直在使用Spark RDD API(Spark 2.0)来处理在Cassandra.Note中建模的数据,这些数据在Cassandra中建模以实现高效的读写。 然而,现在还有SparkSQLAPI,Spark DataFrame API,它也是一种替代的数据访问方法-http://spark.apache.org/docs/latest/sql-programming-guide.html

  • 我用Spring Data Cassandra 2.2.1开发了一个新的应用程序,想在Cassandra 2.1.9服务器上运行它(旧的,我知道)。但是我们得到了错误 Spring数据卡桑德拉手册声称Spring数据2.2.1至少需要卡桑德拉2.1,所以这应该有效,但它没有。我们包含的唯一特定于卡桑德拉的依赖项是 我怎样才能让这个工作?

  • 我正在尝试使用Cassandra 2.1升级到Spring Data Cassandra 1.5. x的Spring Boot 1.5,但出现启动错误: 未能实例化[org.springframework.data.cassandra.mapping.CassandraMappingContext]:工厂方法“cassandraMapping”引发异常;嵌套异常为java.lang.NoClass