我正在使用 azure 表存储来存储博客文章。每篇博文都可以有不同的标签。所以我将有三个不同的表。
- 一个将存储博客文章。
- 一个用于存储标签
- 一种将存储标签和帖子之间的关系
所以我的问题如下,是否可以创建动态搜索查询?因为直到运行时我才知道要搜索多少个标签。据我了解,您只能使用 LINQ 查询天蓝色表。或者我可以输入一个可以动态更改的字符串查询吗?
更新
这是博客表中的一些示例数据
PartitionKey,RowKey,Timestamp,Content,FromUser,Tags
user1, 1, 2012-08-08 13:57:23, "Hello World", "root", "yellow,red"
博客标签表
PartitionKey,RowKey,Timestamp,TagId,TagName
"red", "red", 2012-08-08 11:40:29, 1, red
"yellow", "yellow", 2012-08-08 11:40:29, 2, yellow
关系表
PartitionKey,RowKey,Timestamp,DataId,TagId
1, 1, 2012-08-08 11:40:29, 1, 1
2, 1, 2012-08-08 13:57:23, 1, 2
这些表的一个使用示例是,例如,当我想获取所有带有特定标签的博客文章时。
- 我必须从 blogTag 表中查询 tagId
- 在我需要在关系表中搜索 dataId 之后
- 最后,我需要在博客表中搜索具有该 dataId 的博客文章
我正在使用 LINQ 执行查询,它看起来像以下
CloudTableQuery<DataTag> tagIds = (from e in ctx2.CreateQuery<DataTag>("datatags")
where e.PartitionKey == tags
select e).AsTableServiceQuery<DataTag>();
我尝试了使用过滤器的 Gaurav Mantri 建议,它有效。但我担心这样做的效率会如何。关于仅允许进行 15 次离散比较的限制。