【发布时间】:2020-06-08 07:21:37
【问题描述】:
我正在尝试使用 Entity Framework Core 访问 CosmosDB 集合。
我的数据库有各种数据,但主键是 'id' 我的模型有一个子集,但使用 'Id' 而不是 'id'。
我已检查我是否能够读取/写入测试数据库,其中包含“id”的副本作为“Id”。这不会导致任何问题。
据我所知,https://docs.microsoft.com/en-us/ef/core/modeling/indexes 应该可以设置“HasName”属性。
[DataContract]
[Serializable]
public class TestModel
{
[DataMember]
[JsonProperty("id")]
public string Id { get; set; }
[DataMember]
public string Pid { get; set; }
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<TestModel>().ToContainer("TestModel");
modelBuilder.Entity<TestModel>().HasPartitionKey(x => x.Pid);
modelBuilder.Entity<TestModel>().HasNoDiscriminator();
modelBuilder.Entity<TestModel>().HasKey(b => b.Id).HasName("id");
}
使用这个,我仍然得到一个错误。
InvalidOperationException:无法跟踪“TestModel”类型的实体,因为主键属性“Id”为空。
我也曾在试错中,尝试过使用。 - HasName + HasKey / HasIndex - HasColumnName + 属性
【问题讨论】:
-
您解决了这个问题还是还在寻找解决方案? docs.microsoft.com/en-us/ef/core/providers/cosmos/…
-
我无法解决这个@MikeUbezziMSFT 任何赞赏的指针。
-
我不再在微软工作。我希望您能够或已经找到解决方案。再次对延迟回复更新表示歉意。
标签: entity-framework .net-core entity-framework-core azure-cosmosdb