实体框架ApplicationUser子实体返回null

时间:2016-01-04 02:18:44

标签: asp.net-core asp.net-core-mvc entity-framework-core asp.net-identity-3

我们有一个继承自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);

我知道membersUser在Devices表中有6个设备,但Devices属性为null。

以下内容还为此用户设备返回null

var deviceList = membershipUser.Devices.ToList();

如何连接设备以便正确返回?

1 个答案:

答案 0 :(得分:3)

延迟加载不适用于EF7。但您可以在请求中使用Include