相关疑难解决方法(0)

UserManager 抛出异常 - 无法跟踪实体,因为主键属性“Id”为空 - 从 .Net Core 2.2 升级到 3.0 后

我使用了UserIdentityUserusing派生的自定义实现Asp.Net Core Identity

public class AppUser : IdentityUser
    {
        ...
    }
Run Code Online (Sandbox Code Playgroud)

如果我调用该方法:

var identityResult = await UserManager.CreateAsync(user);
Run Code Online (Sandbox Code Playgroud)

我收到错误:

System.InvalidOperationException:无法跟踪“AppUser”类型的实体,因为主键属性“Id”为空。

它的工作原理完全符合的版本Microsoft.AspNetCore.Identity.EntityFrameworkCore- 2.2.0,但升级后3.0.0-这是行不通的。

我在测试用户创建过程中也遇到同样的错误,我使用以下UserManager配置:

https://github.com/aspnet/AspNetCore/blob/c95ee2b051814b787b07f55ff224d03d550aafeb/src/Identity/test/Shared/MockHelpers.cs#L37

entity-framework-core asp.net-core asp.net-core-identity

8
推荐指数
1
解决办法
2665
查看次数

Entity Framework Core,无法在 PrimaryKey 上设置 HasName

我正在尝试使用 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 + 属性

entity-framework entity-framework-core .net-core azure-cosmosdb

6
推荐指数
1
解决办法
393
查看次数