EF Core和CosmosDB提供程序拥有的馆藏例外

我有一个带有CosmosDB提供程序的Entity Framework Core上下文,并且只有一个实体:

public class Entity1
{
    public Guid Id { get; set; }

    public List<Item> Items { get; set; }
}

这是实体的内部对象:

public class Item
{
    public Guid Id { get; set; }

    public List<SubItem> SubItems { get; set; }
}

public class SubItem
{
    public Guid Id { get; set; }
    public string Name { get; set; }
}

Entity1具有类型owned的{​​{1}}属性,并且具有类型Item的另一个owned属性。这是SubItem的配置文件:

Entity1

最后,当我尝试访问public class Entity1Configuration : IEntityTypeConfiguration<Entity1> { public void Configure(EntityTypeBuilder<Entity1> builder) { builder.ToContainer("Entity1"); builder.HasKey(x => x.Id); builder.OwnsMany(x => x.Items,itemsBuilder => { itemsBuilder.OwnsMany(t => t.SubItems,subitemsBuilder => { subitemsBuilder.HasKey(x => x.Id); }); }); } } 的元素时,我从EF Core获得了DbSet<Entity1> Entities1

InvalidOperationException

例外是这样:

System.InvalidOperationException :“从'VisitLambda'调用时,重写类型为'System.Linq.Expressions.ParameterExpression'的节点必须返回相同类型的非null值。或者,覆盖“ VisitLambda”并将其更改为不访问该类型的子级。”

该行中抛出异常: CosmosDbContext cosmosDbContext = new CosmosDbContext("https://localhost:8081","myprivatekey","Dev"); cosmosDbContext.Database.EnsureCreated(); var entities = cosmosDbContext.Entities1.ToList(); Console.WriteLine(entities.Count);

如果我从类var entities = cosmosDbContext.Entities1.ToList();中删除了SubItems属性,一切正常。我还尝试将EF的提供程序更改为Onmemory,并且一切正常。我用谷歌搜索这个异常,到目前为止还没有运气。我可以拥有像EF Core和CosmosDB provier这样的内部实体吗?

supportjj 回答:EF Core和CosmosDB提供程序拥有的馆藏例外

请参阅Translation of Lambda in SqlTranslator throws exception,此错误已在较新的EntityFrameworkCore程序包中修复。

请升级到最新版本,例如:3.1.0-preview2.19525.5。我在一边测试,问题已解决。

本文链接:https://www.f2er.com/3137836.html

大家都在问