Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Cosmos DB配置EF Core以存储字符串的ICollection_C#_Entity Framework Core_Azure Cosmosdb_Azure Cosmosdb Sqlapi - Fatal编程技术网

C# 使用Cosmos DB配置EF Core以存储字符串的ICollection

C# 使用Cosmos DB配置EF Core以存储字符串的ICollection,c#,entity-framework-core,azure-cosmosdb,azure-cosmosdb-sqlapi,C#,Entity Framework Core,Azure Cosmosdb,Azure Cosmosdb Sqlapi,Entity framework有一些很好的文档,但是我不知道如何嵌入一个简单的字符串数组IEnumerable 样本类 公共类职位{ 公共字符串Id{get;set;} 公共字符串内容{get;set;} 公共IEnumerable标记{get;set;} } 这应该保存在cosmos中,作为: { “id”:“xxx”, “内容”:“此处内容较长”, “标记”:[“标记1”、“标记2”], ... } 我知道我必须在上下文的OnModelCreating(modelbuildermode

Entity framework有一些很好的文档,但是我不知道如何嵌入一个简单的字符串数组
IEnumerable

样本类

公共类职位{
公共字符串Id{get;set;}
公共字符串内容{get;set;}
公共IEnumerable标记{get;set;}
}
这应该保存在cosmos中,作为:

{
“id”:“xxx”,
“内容”:“此处内容较长”,
“标记”:[“标记1”、“标记2”],
...
}
我知道我必须在上下文的
OnModelCreating(modelbuildermodelbuilder)
中配置一些东西。但我无法正确安装它

我尝试了以下选项(以及其他几种
ToJsonProperty
方法):

  • modelBuilder.Entity().OwnsMany(p=>p.Tags)
  • modelBuilder.Entity().OwnsMany(p=>p.Tags)
最后,我希望能够查询基于这些标签,任何帮助或在正确的方向上的指针非常感谢

我还发现,但将数组转换为逗号分隔的字符串将无法达到目的(因为这不允许我们查询这些帖子)

还有人在微软论坛上提出了大致相同的问题,微软的一名员工表示,在纯CosmosDB中,可以在cosmos中嵌入字符串数组。

我在EF core provider for cosmos上发现了一个跟踪此问题的网站


因此,官方的答案是,这是目前不受支持的。至少在上述问题结束之前。

我最近试图找到同一问题的答案。没有找到好的解决方案,所以我创建了一个新模型

public class Tag
{
   public string Name { get; set; }
}

public class Post
{
  ...
  public IEnumerable<Tag> Tags { get; set; }
}

...
modelBuilder.Entity<Post>().OwnsMany(p => p.Tags);
公共类标记
{
公共字符串名称{get;set;}
}
公营职位
{
...
公共IEnumerable标记{get;set;}
}
...
modelBuilder.Entity().OwnsMany(p=>p.Tags);

虽然这是解决这个问题的好方法,但主要问题仍然是不支持简单的字符串集合。不知道最好的答案是什么。