Entity Framework ApplicationUser 子实体 return 空
Entity Framework ApplicationUser child entities return null
我们有一个继承自 IdentityUser 的 ApplicationUser class。一个 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; }
}
以下代码正确returns用户
var membershipUser = await _userManager.FindByEmailAsync(email);
我知道 membershipUser 在设备 table 中有 6 台设备,但是设备 属性 为空。
以下也returns对于此用户设备无效
var deviceList = membershipUser.Devices.ToList();
如何连接设备以便正确返回它们?
延迟加载不适用于 EF7
。但是您可以在请求中使用 Include
。
我们有一个继承自 IdentityUser 的 ApplicationUser class。一个 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; }
}
以下代码正确returns用户
var membershipUser = await _userManager.FindByEmailAsync(email);
我知道 membershipUser 在设备 table 中有 6 台设备,但是设备 属性 为空。
以下也returns对于此用户设备无效
var deviceList = membershipUser.Devices.ToList();
如何连接设备以便正确返回它们?
延迟加载不适用于 EF7
。但是您可以在请求中使用 Include
。