Entity Framework ApplicationUser 자식 엔터티가 null을 반환합니다.

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

문제

IdentityUser로부터 상속받은 ApplicationUser 클래스가 있습니다. ApplicationUser에는 여러 장치가있을 수 있습니다.

    public class ApplicationUser : IdentityUser
{
    public virtual ICollection<Device> Devices { get; set; }
}

장치는 다음과 같이 정의됩니다.

    public partial class Device
{
    [Key]
    public int DeviceID { get; set; }
    public string UserId { get; set; }
    public virtual ApplicationUser User { get; set; }
    public string DeviceName { get; set; }
}

일대 다 관계가 설정됩니다.

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

            modelBuilder.Entity<Device>(entity =>
        {
            entity.HasKey(e => e.DeviceID);

            entity.Property(e => e.DeviceName)
                .IsRequired()
                .HasMaxLength(50)
                .HasColumnType("varchar");

            entity.Property(e => e.UserId)
                .IsRequired()
                .HasMaxLength(450);

            entity.HasOne(d => d.User).WithMany(p => p.Devices).HasForeignKey(d => d.UserId).OnDelete(DeleteBehavior.Restrict);
        });

        public virtual DbSet<Device> Devices { get; set; }
}

다음 코드는 사용자를 올바르게 반환합니다.

var membershipUser = await _userManager.FindByEmailAsync(email);

memberUser는 Devices 테이블에 6 개의 장치가 있지만, Devices 속성은 null입니다.

다음은이 사용자 장치에 대해 null을 반환합니다.

var deviceList = membershipUser.Devices.ToList();

올바르게 반환되도록 장치를 연결하는 방법은 무엇입니까?

수락 된 답변

EF7 에서는 지연로드가 작동하지 않습니다. 그러나 귀하의 요청에 Include 을 사용할 수 있습니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.