首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在F#中遍历Azure存储类型提供程序生成的类型

在F#中遍历Azure存储类型提供程序生成的类型
EN

Stack Overflow用户
提问于 2017-05-19 11:08:03
回答 1查看 69关注 0票数 5

我试图让我的头脑类型提供商在F#和他们可以用来。我有以下问题:

Azure Blob存储中存储了一系列JSON对象,如下所示:

代码语言:javascript
复制
container/YYYY/MM/DD/file.json

我可以使用类型提供程序轻松地导航到给定日期的特定文件。例如,我可以在5月5日作为字符串访问JSON对象

代码语言:javascript
复制
type Azure = AzureTypeProvider<"ConnectionString">
let containers  = Azure.Containers.``container``.``2017/``.``05/``.``05/``.``file.json``.Read()

如何获取用户输入日期字符串,例如"2017-05-05“,并以类型安全的方式获取相应的JSON对象?我应该使用类型提供程序吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-19 11:48:41

您正遇到一个与许多TPs的性质有关的常见“问题”,特别是那些针对实际数据提供模式的TPs--因为它将数据和类型之间的界限混合在一起,您需要知道什么时候您在与静态类型很好地工作的模式(即在编译时知道您正在使用的blob容器的模式),或者以一种本质上是动态的方式工作。

你有几个选择。

  1. 回到“本地”.NET SDK。每个blob /容器都有关联的AsCloudBlob()AsCloudContainer()方法,因此您可以对已知的位使用TP,例如容器名称、可能是顶级文件夹等,然后返回到本地SDK对弱类型的位。
  2. 自从最新的TP发布以来,现在有几种方式支持编程访问:-
代码语言:javascript
复制
- You can use indexers to get an unsafe handle to a blob e.g. `let blob = Azure.Containers.container.["2017/05/05/file.json"]`. There's no guarantee that the blob exists, so you need to check that yourself etc.
- You can use the `TryGetBlockBlob()` method, which returns a `blob option async` - behind the scenes, it will do a check if the blob exists or not, and then return either None, or Some blob.

您可以看到所有这些替代方案的更多示例,这里

  1. 如果您预先知道您正在使用的完整路径(在编译时--也许是一些众所周知的路径等等),您也可以使用TP中的离线支持在编译时创建显式blob模式,而不需要真正的存储帐户。
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44068490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档