C# DataStax 驱动程序中的 CassandraEntityBase

我有一个 .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 ?


慕桂英4014372
浏览 83回答 1
1回答

蓝山帝景

找到了。这是故意的。在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;}现在,我将选择在存储库或对象存储库插入期间设置我的属性。
打开App,查看更多内容
随时随地看视频慕课网APP