【发布时间】:2018-11-29 04:23:45
【问题描述】:
我是这个 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;
}
}
我所做的只是创建一个实体并创建一个不完整的密钥,发送到服务器,然后从服务器取回填充的密钥。
我认为 key 是实体的唯一身份。
如有误解请指正。
我可以通过查询获取实体如下:
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) 的唯一实体。
示例显示Key的结构是:
{
"partitionId":
{
"projectId": "projectId",
"namespaceId": "namespaceId"
},
"path": [
{
"kind": "kind",
"id": "id"
}]
}
我在这里结束我的问题:
- Key 类有什么用?
- 什么是 Key 的路径,为什么是数组?
-
id是实体的唯一键吗? - 如何通过
Key和IdQuery?
感谢您的阅读,请不要介意我的英语不好。
【问题讨论】:
标签: c# google-cloud-platform google-cloud-datastore