Entity Framework Core 5 和 CosmosDB SQL API - 包含扩展方法不起作用

问题描述 投票:0回答:2

我已按照以下 EF Core 5 站点中的步骤操作,以便存储和读取 CosmosDB 中的项目。这是网站:https://www.learnentityframeworkcore5.com/database-providers/cosmos

存储按预期工作,但是当运行教程中的命令来读取项目时,我收到以下错误:

System.InvalidOperationException:“包括导航‘Navigation:Author.Books(列表)Collection ToDependent Book Inverse:Author’不受支持,因为导航未嵌入同一资源中。”

抛出异常的代码行:

var list = context.Authors
    .Include(a => a.Books)
    .ToList();

EF Core 5 for CosmosDB 似乎不支持 Include 方法。有人对这个问题有经验吗?

c# .net-core entity-framework-core azure-cosmosdb azure-cosmosdb-sqlapi
2个回答
0
投票

为我解决的问题是删除上下文类中单独的

DbSet
,例如
DbSet<Book>
。通过它自己的
DbSet
,我的对象被映射到单独的文档;如果没有它,它们将存储在包含文档的数组中(例如
Author
)。

我想您想根据除作者之外的其他信息来查询书籍,但就我而言,我认为我能够使用它。


-1
投票

我会看一下 Microsoft.EntityFrameworkCore.Cosmos。

因为它提供了一种将作者映射到书籍的方法

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
       modelBuilder.Entity<Authors>()
                .HasMany(p => p.Books);
}

https://learn.microsoft.com/en-us/ef/core/providers/cosmos/planetary-docs-sample https://learn.microsoft.com/en-us/ef/core/modeling/relationships?tabs= Fluent-api%2C Fluent-api-simple-key%2Csimple-key

© www.soinside.com 2019 - 2024. All rights reserved.