我有一个 .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;}
现在,我将选择在存储库或对象存储库插入期间设置我的属性。
- 1 回答
- 0 关注
- 82 浏览
添加回答
举报
0/150
提交
取消