programing

엔티티 유형 MVC5 EF6의 사용자

minimums 2023. 8. 1. 20:22
반응형

엔티티 유형 MVC5 EF6의 사용자

MVC5에 클래스를 만들었습니다. 여기서 컨텐츠의 기본 소유자를 찾고 컨텐츠에 대한 편집자를 몇 명 두고 싶습니다.

public class Content
{
    public int ID { get; set; }
    public IdentityUser Owner { get; set; }
    public ICollection<IdentityUser> Editors { get; set; }
    public string Title{ get; set; }
    public string Body { get; set; }
}

데이터베이스 컨텍스트에는 다음 코드가 있습니다.

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

    modelBuilder.Entity<Content>()
        .HasOptional(c => c.Editors)
        .WithRequired()
        .WillCascadeOnDelete();

    modelBuilder.Entity<Content>()
        .HasRequired(c => c.Owner)
        .WithOptional()
        .WillCascadeOnDelete();
}

마이크로소프트가 다음을 구현할 것으로 예상합니다.IdentityUser다른 엔터티 유형에서 사용할 수 있는 그런 방식으로 개체를 생성하면 내용 엔터티 유형에 대한 컨트롤러를 만들 때 다음 오류가 발생하기 때문에 잘못된 작업을 수행하고 있을 수 있습니다.

EntityType 'IdentityUserLogin' has no key defined
EntityType 'IdentityUserRole' has no key defined
EntityType: EntitySet 'IdentityUserLogins' is based on type 'IdentityUserLogin' that has no key defined
EntityType: EntitySet 'IdentityUserRoles' is based on type 'IdentityUserRole' that has no key defined

나는 또한 다음 코드를 추가하려고 했습니다.ApplicationDbContext이 질문에서 설명한 바와 같이 asp.net MVC5 EF6의 fluent api를 사용한 Map table?:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);
    modelBuilder.Entity<IdentityUserLogin>().HasKey<string>(l => l.UserId);
    modelBuilder.Entity<IdentityRole>().HasKey<string>(r => r.Id);
    modelBuilder.Entity<IdentityUserRole>().HasKey(r => new { r.RoleId, r.UserId });
}

제가 뭔가 잘못하고 있는 게 틀림없어요.내 컨텐츠 엔터티 유형에서 사용자를 처리하는 방법을 알려주십시오.

저도 같은 문제가 있었는데 제가 전화를 하지 않았다는 것을 알았습니다.

 base.OnModelCreating(modelBuilder);

내 DB 모델에서

다음 방법,OnModelCreating작업 컨텍스트를 만듭니다.하지만 당신이 원하는 매핑인지는 확실하지 않습니다.

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

    modelBuilder.Entity<Content>()
        .HasMany(c => c.Editors)
        .WithOptional()
        .WillCascadeOnDelete(false);

    modelBuilder.Entity<Content>()
        .HasRequired(c => c.Owner)
        .WithOptional()
        .WillCascadeOnDelete(false);

    modelBuilder.Entity<IdentityUserLogin>().HasKey<string>(l => l.UserId);
    modelBuilder.Entity<IdentityRole>().HasKey<string>(r => r.Id);
    modelBuilder.Entity<IdentityUserRole>().HasKey(r => new { r.RoleId, r.UserId });
}

언급URL : https://stackoverflow.com/questions/19913447/user-in-entity-type-mvc5-ef6

반응형