C# 如何为Azure Blob添加和检索其他信息

C# 如何为Azure Blob添加和检索其他信息,c#,.net,azure,blob,azure-storage,C#,.net,Azure,Blob,Azure Storage,有没有办法为Azure中的blob添加其他信息 我想存储一些相关信息,这些信息将blob连接到文档数据库中的其他实体,例如包含JSON的字符串 我知道当我使用Azure Storage explorer时,blob有元数据,但我想从代码中使用它 这是一个关于这一主题的相关问题: 那么如何基于此元数据检索blob呢?您检查过了吗 记住 元数据的名称必须符合C标识符的命名约定 你检查过这个了吗 记住 元数据的名称必须符合C标识符的命名约定 问题的第一部分由Mihail Stancescu回答,谢谢

有没有办法为Azure中的blob添加其他信息

我想存储一些相关信息,这些信息将blob连接到文档数据库中的其他实体,例如包含JSON的字符串

我知道当我使用Azure Storage explorer时,blob有元数据,但我想从代码中使用它

这是一个关于这一主题的相关问题:

那么如何基于此元数据检索blob呢?

您检查过了吗

记住

元数据的名称必须符合C标识符的命名约定

你检查过这个了吗

记住

元数据的名称必须符合C标识符的命名约定


问题的第一部分由Mihail Stancescu回答,谢谢

第二部分尚未正确回答。Azure搜索是一种解决方案,但它完全是另一种服务。我想在我的repository类中解决这个问题。我解决了这个问题

也许这对其他人来说很有趣,这就是我分享我的解决方案的原因:

解决方案背后 AzureBlob中有一个元数据,它具有字符串类型。我将一个对象序列化为字符串,并将该字符串存储在元数据中。在任何情况下,当我需要这些信息时,我都会在其中列出元数据。我使用此功能是为了将Microsoft.WindowsAzure.Storage.Blob.BlobListingDetails.Metadata值传递给ListBlobs函数中的BlobListingDetails参数

当blob到达时,我将从JSON反序列化回object。此机制在LINQ Select中可见:

.Select<Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob, T>(blob = > JsonConvert.DeserializeObject<T>(blob.Metadata["data"]))
基类

其中文件类为:

public class ContractFile : File
{
    public string Partner { get; set; }
    public Date CreationDate { get; set; }
    public string Remarks { get; set; }
    public string Filename { get; set; }
}
...
public class File
{
    public String File { get; set; }
    public Stream Data { get; set; }
}
插入内容如下:

    public void AddOne( T file )
    {
        file.id = Guid.NewGuid().ToString();
        Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob blob = _AzureBlobCollection.BlobDirectory.GetBlockBlobReference( file.id );

        blob.UploadFromStream( file.Data );
        blob.Metadata.Add( "data", JsonConvert.SerializeObject( file ) );
        blob.SetMetadata();
    }

问题的第一部分由Mihail Stancescu回答,谢谢

第二部分尚未正确回答。Azure搜索是一种解决方案,但它完全是另一种服务。我想在我的repository类中解决这个问题。我解决了这个问题

也许这对其他人来说很有趣,这就是我分享我的解决方案的原因:

解决方案背后 AzureBlob中有一个元数据,它具有字符串类型。我将一个对象序列化为字符串,并将该字符串存储在元数据中。在任何情况下,当我需要这些信息时,我都会在其中列出元数据。我使用此功能是为了将Microsoft.WindowsAzure.Storage.Blob.BlobListingDetails.Metadata值传递给ListBlobs函数中的BlobListingDetails参数

当blob到达时,我将从JSON反序列化回object。此机制在LINQ Select中可见:

.Select<Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob, T>(blob = > JsonConvert.DeserializeObject<T>(blob.Metadata["data"]))
基类

其中文件类为:

public class ContractFile : File
{
    public string Partner { get; set; }
    public Date CreationDate { get; set; }
    public string Remarks { get; set; }
    public string Filename { get; set; }
}
...
public class File
{
    public String File { get; set; }
    public Stream Data { get; set; }
}
插入内容如下:

    public void AddOne( T file )
    {
        file.id = Guid.NewGuid().ToString();
        Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob blob = _AzureBlobCollection.BlobDirectory.GetBlockBlobReference( file.id );

        blob.UploadFromStream( file.Data );
        blob.Metadata.Add( "data", JsonConvert.SerializeObject( file ) );
        blob.SetMetadata();
    }

就这样!谢谢。有没有办法根据元数据内容列出此Blob?也许这会有所帮助:。我还没试过。我通常通过默认索引获取它们,然后显示元数据。就是这样!谢谢。有没有办法根据元数据内容列出此Blob?也许这会有所帮助:。我还没试过。我通常通过默认索引获取它们,然后显示元数据。我不知道为什么这个答案被否决了。请对你的问题发表意见,我会改正的。谢谢:我不知道为什么这个答案被否决了。请对你的问题发表意见,我会改正的。谢谢您: