Ale*_*olo 6 entity-framework entity-framework-core .net-core azure-cosmosdb
我正在尝试使用 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");
}
Run Code Online (Sandbox Code Playgroud)
使用这个,我仍然得到一个错误。
InvalidOperationException:无法跟踪类型为“TestModel”的实体,因为主键属性“Id”为空。
我也曾在反复试验中,尝试使用。- HasName + HasKey / HasIndex - HasColumnName + 属性
这似乎是由EF Core 3.0 中的重大更改引起的,可以在此处找到这些更改。
你也许可以通过数据注释来解决它[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public class TestModel
{
[DataMember]
[JsonProperty("id")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public string Id { get; set; }
(...)
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,第二种解决方案是为 id 分配一个 GUID。有关更多信息,请参阅此讨论/sf/answers/4139408521/。
| 归档时间: |
|
| 查看次数: |
393 次 |
| 最近记录: |