模型对象返回空值

时间:2019-01-28 08:59:19

标签: c# .net

我使用的是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为空,但不应为空

2 个答案:

答案 0 :(得分:3)

您想要做的事情是在实体框架中使用延迟加载。

要在运行时加载该文件,您必须使用:

.Include(x => x.target)

编辑:实体框架核心尚不支持延迟加载。您目前只能在实体框架中使用延迟加载。

由于您与命名不一致(骆驼和帕斯卡盒混合使用),请调整拼写

答案 1 :(得分:1)

如果正确配置了外键,则可以使用.Include(c => c.YourProperty)。