IT박스

IdentityUserLogin

itboxs 2020. 12. 28. 07:57
반응형

IdentityUserLogin'마이그레이션을 추가하는 동안 오류를 정의하려면 기본 키가 필요합니다.


2 개의 다른 Dbcontext를 사용하고 있습니다. 2 개의 다른 데이터베이스 사용자와 mycontext를 사용하고 싶습니다. 이 작업을 수행하는 동안 엔터티 유형 'Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserLogin'에 기본 키를 정의해야합니다. IdentityUser에 문제가 있다고 생각합니다. 마이그레이션을 추가 할 수 있도록 코드를 어디에서 변경할 수 있는지 알려주세요.

내 Dbcontext 클래스 :

 class MyContext : DbContext
{
    public DbSet<Post> Posts { get; set; }
    public DbSet<Tag> Tags { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.Entity<PostTag>()
            .HasKey(t => new { t.PostId, t.TagId });

        modelBuilder.Entity<PostTag>()
            .HasOne(pt => pt.Post)
            .WithMany(p => p.PostTags)
            .HasForeignKey(pt => pt.PostId);

        modelBuilder.Entity<PostTag>()
            .HasOne(pt => pt.Tag)
            .WithMany(t => t.PostTags)
            .HasForeignKey(pt => pt.TagId);
    }
}

public class Post
{
    public int PostId { get; set; }
    public string Title { get; set; }
    public AppUser User {get; set;}
    public string Content { get; set; }

    public List<PostTag> PostTags { get; set; }
}

public class Tag
{
    public string TagId { get; set; }

    public List<PostTag> PostTags { get; set; }
}

public class PostTag
{
    public int PostId { get; set; }
    public Post Post { get; set; }

    public string TagId { get; set; }
    public Tag Tag { get; set; }
}

및 AppUser 클래스 :

public class AppUser : IdentityUser
{
  //some other propeties
}

마이그레이션을 추가하려고하면 다음 오류가 발생합니다.

The entity type 'Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserLogin<string>' requires a primary key to be defined.

문제를 해결할 수있는 해결책을 줘 ..


링크를 간단하게 줄이려면 다음을 시도하십시오.

protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

    ...

See Above link for more.


This issue will start coming as soon as you wrote the following lines in DBContext without adding 'base.OnModelCreating(modelBuilder);'

protected override void OnModelCreating(ModelBuilder modelBuilder)
{

}

Two solutions:

1) Don't override OnModelCreating in DbContext Until it becomes necessary

2) Override but call base.OnModelCreating(modelBuilder)


The problem is AppUser is inherited from IdentityUser and their primary keys are not mapped in the method OnModelCreating of dbcontext.

There is already a post available with resolution. Visit the below link

EntityType 'IdentityUserLogin' has no key defined. Define the key for this EntityType

Hope this helps.

ReferenceURL : https://stackoverflow.com/questions/39798317/identityuserloginstring-requires-a-primary-key-to-be-defined-error-while-addi

반응형