我使用的是 VS17.10.5 Net 8,Blazor 服务器端。
我有一个 EF Core 上下文,其中包含一个简单的数据类 Person(id、姓名、地址、电话),该数据类被设置为指向 Cosmos DB 数据库。
当我调用 SaveChanges() 保存到 Cosmos DB 时,我收到一条错误消息
无法计算表达式。导致此错误的一个常见原因是尝试将 lamda 传递给委托。
我的代码如下:
Person p = new Person() {id = 1, Name="bob", Address="someAddr", Phone="123", PartitionKey="/person"}
dbContext.Add(p);
dbContext.SaveChanges(); <-- exception
解决我的问题 由于某种原因,EF Core 似乎并未首先支持 Cosmos DB 的数据库。
我需要在执行代码之前确保创建一个。
dbContext.Databse.EnsureCreated()
这在上下文中获取了OnModelCreating()中的实体(构建器)定义,并根据需要创建了 Cosmos 容器。
因为我使用的是 Blazor 模板,所以它还要求我实现 IdentityDbContext 的架构,这需要将 7 个身份实体添加到 2 个附加容器中(由于分区键约束)。