C# 模型对象正在返回null

C# 模型对象正在返回null,c#,.net,C#,.net,我使用的是dotnet core 2.1。问题是,当我的数据库有值并且我正在查询它时,它会在UserInteractions模型中返回值,但它表示用户对象为null。虽然它不是空的。我的模型和查询如下: public class UserInteractions { public int Id { get; set; } public int? UserId { get; set; } [ForeignKey ("UserId")] public User user { get; set; }

我使用的是dotnet core 2.1。问题是,当我的数据库有值并且我正在查询它时,它会在UserInteractions模型中返回值,但它表示用户对象为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为null,但如果外键配置正确,则不应为null。Include(c=>c.YourProperty)。

您尝试在Entity Framework中使用延迟加载

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

.Include(x => x.target)
编辑:实体框架核心尚不支持延迟加载。当前只能对实体框架使用延迟加载


请调整拼写,因为您与命名不一致(混合使用camel和pascal大小写)

Try
\u db.UserInteractions.Include(x=>x.Target).FirstOrDefault(o=>o.UserId==2)您可以在这里签出。@Rango他/她正在尝试访问
mediaInfo.target
。问题特别指出,
返回UserInteractions模型中的值,但表示用户对象为null
FirstOrDefault
将返回默认值
null
,如果没有ID==2的用户。这就是代码明确要求的。问题是什么?@PanagiotisKanavos你的回答是正确的。它不会扔。但是,他/她不是在谈论NRE。请阅读问题。@CemYILMAZ,即使有相关用户延迟加载,也会返回。但这将导致额外的查询。如果在加载
mediainfo
对象之后,
target
立即为空,则自他写入:mediainfo.target之后,没有相关用户正在访问;你在说什么?请看这个问题:var mediaInfo=_db.UserInteractions.FirstOrDefault(o=>o.UserId==2);用户inf=mediaInfo.target;Noone说他正在获得NRE,唯一的问题是,在访问之后:“它返回UserInteractions模型中的值,但它表示用户对象为null”,因此UserInteractions不是null,但未包含的targetr是null。即使是延迟加载,加载用户后立即尝试访问
.target
,如果存在匹配的
用户
,则不会返回null<当原始数据库上下文可用时,不需要代码>包含
。很可能是关系未配置或没有相关的
用户
记录。这就解决了问题