我使用的是dotnet core 2.1。问题是当我的数据库中有值并且正在查询它时,它在UserInteractions模型中返回值,但它表示User Object为null。尽管它不是null。我的模型和查询如下:
public class UserInteractions {
public int Id { get; set; }
public int? UserId { get; set; }
[ForeignKey ("UserId")] public User user { get; set; }
public int? TargetId { get; set; }
[ForeignKey ("TargetId")] public User target { get; set; }
public int NumberOfMusicMedia { get; set; }
public int VolumeOfMusicMedia { get; set; }
public int NumberOfImageMedia { get; set; }
public int VolumeOfImageMedia { get; set; }
public int NumberOfVideoMedia { get; set; }
public int VolumeOfVideoMedia { get; set; }
public int NumberOfDocumentMedia { get; set; }
public int VolumeOfDocumentMedia { get; set; }
public bool IsMuted { get; set; }
}
public class User {
[Key]
public int Id { get; set; }
public string Phone { get; set; }
public string Name { get; set; }
public string UserName { get; set; }
}
这是我的查询
var mediaInfo = _db.UserInteractions.FirstOrDefault (o => o.UserId == 2);
User inf = mediaInfo.target;
它说inf为空,但不应为空
答案 0 :(得分:3)
您想要做的事情是在实体框架中使用延迟加载。
要在运行时加载该文件,您必须使用:
.Include(x => x.target)
编辑:实体框架核心尚不支持延迟加载。您目前只能在实体框架中使用延迟加载。
由于您与命名不一致(骆驼和帕斯卡盒混合使用),请调整拼写
答案 1 :(得分:1)
如果正确配置了外键,则可以使用.Include(c => c.YourProperty)。