我是这个 nuget 包的新手,并且对Key类感到困惑。
这是我基于Google.Cloud.Datastore.V1文档的代码库:
public long InsertMessage<T>(T iEntity) where T : IEntity<T>
{
var keyFactory = _db.CreateKeyFactory(Kind);
var entity = iEntity.ToEntity();
entity.Key = keyFactory.CreateIncompleteKey();
using (var transaction = _db.BeginTransaction())
{
transaction.Insert(entity);
var commitResponse = transaction.Commit();
var insertedKey = commitResponse.MutationResults[0].Key;
Logger.Info($"Inserted key: {insertedKey}");
return insertedKey.Path[0].Id;
}
}
我所做的就是创建一个实体并创建一个不完整的密钥,发送到服务器,然后从服务器取回填充的密钥。
我认为密钥是实体的唯一标识。
如果有误解请纠正我。
我可以通过 Query 获取实体,如下所示:
var query = new Query(Kind)
{
Filter = Filter.Equal("key", key),
Order = { { "created", PropertyOrder.Types.Direction.Ascending } }
};
foreach (var entity in _db.RunQueryLazily(query))
{
list.Add(entity);
}
但我不知道如何使用插入时获得的密钥来获取唯一实体Filter.Equal("key", key)。
该示例显示密钥的结构是:
{
"partitionId":
{
"projectId": "projectId",
"namespaceId": "namespaceId"
},
"path": [
{
"kind": "kind",
"id": "id"
}]
}
在这里我总结一下我的问题:
什么是关键类?
Key 的路径是什么,为什么是数组?
是id
实体的唯一键吗?
如何Query
通过Key
和Id
?
感谢阅读,请不要介意我糟糕的英语。
智慧大石
相关分类