nih*_*il0 5 f# functional-programming azure type-providers
我试图了解F#中的类型提供者以及它们可以用于什么.我有以下问题:
我在Azure Blob存储中有一系列JSON对象,存储方式如下:
container/YYYY/MM/DD/file.json
Run Code Online (Sandbox Code Playgroud)
我可以使用类型提供程序轻松导航到给定日期的特定文件.例如,我可以将JSON对象作为5月5日的字符串访问
type Azure = AzureTypeProvider<"ConnectionString">
let containers = Azure.Containers.``container``.``2017/``.``05/``.``05/``.``file.json``.Read()
Run Code Online (Sandbox Code Playgroud)
如何获取用户输入日期字符串,说"2017-05-05"并以类型安全的方式获取相应的JSON对象?我应该使用类型提供商吗?
你遇到了许多TP的性质的常见"问题",特别是那些提供实际数据模式的问题 - 因为它混合了数据和类型之间的界限,你需要注意你何时工作一种适用于静态类型的模式(即,您在编译时知道正在使用的blob容器的模式),或者以一种本身动态的方式工作.
你有几个选择.
回归"原生".NET SDK.每个BLOB /容器具有关联AsCloudBlob()或AsCloudContainer()方法,这样你就可以使用TP为您的位不知道如容器名称,也许最高级别文件夹等,然后回落到原生SDK的弱类型位.
自TP的最新版本发布以来,现在支持以下几种方式进行编程访问: -
您可以使用索引器来获取blob的不安全句柄,例如let blob = Azure.Containers.container.["2017/05/05/file.json"].不能保证blob存在,所以你需要检查自己等等.
您可以使用该TryGetBlockBlob()方法返回blob option async- 在幕后,它将检查blob是否存在,然后返回None或Some blob.
您可以在此处查看所有这些替代方案的更多示例.
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |