我有一个带有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这样的内部实体吗?