c#datasax驱动程序中的cassandraentitybase

ghhkc1vu  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(399)

我有一个.net核心应用程序,它通过datastax驱动程序将数据持久化到cassandra示例。
我的cassandra实体有一个基类。现在,如果我想将我的timeuuid type 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?

kmpatx3s

kmpatx3s1#

找到了。这是故意的。在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;}

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

相关问题