C# 从ApplicationDbContext调用时,外键对象返回null
我的外键有问题 我想要的是,对于每个视频模型,都有一个到它的概要模型链接 这方面的一个例子如下所示:C# 从ApplicationDbContext调用时,外键对象返回null,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我的外键有问题 我想要的是,对于每个视频模型,都有一个到它的概要模型链接 这方面的一个例子如下所示: public class VideoModels { [Required] public int Id { get; set; } public ProfileModels Profile { get; set; } } 而在ProfileModels中 public class ProfileModels { [Required] publi
public class VideoModels
{
[Required]
public int Id { get; set; }
public ProfileModels Profile { get; set; }
}
而在ProfileModels中
public class ProfileModels
{
[Required]
public int Id { get; set; }
public string Title { get; set; }
}
技术上不应该与VideoModels有任何联系,因为VideoModels依赖于ProfileModels,可能存在0对多关系
所以在测试之后,我的VideoModels有一个Profile_Id参数,它是ProfileModels的外键
但是在创建并检索对象之后,它返回NULL,但是当我检查数据库时,有一个现有的外键Id
请帮帮我,我已经在这里呆了好几个小时了没关系,我只是忘了把外键属性设置为虚拟的
public class VideoModels
{
[Required]
public int Id { get; set; }
public virtual ProfileModels Profile { get; set; }
}
没关系,我只是忘了将外键属性设置为
virtual
public class VideoModels
{
[Required]
public int Id { get; set; }
public virtual ProfileModels Profile { get; set; }
}
Profile
由于LazyLoading
而在此处为空。这允许我们拥有一个包含许多不同对象的对象,这些对象仅在需要时加载,而不是在加载父对象时加载。如果用户具有类似于Comments属性的内容,这将特别有用。如果没有LazyLoading
,只要您想获取VideoModels.ID
,就会加载注释集合。LazyLoading
的一个缺点是,执行的每个导航都需要对数据源进行单独的查询
要允许懒散加载,您需要将相关对象属性标记为虚拟。
此外,必须在上下文中提供导航属性:
public class Database : DbContext {
public DbSet<VideoModels> People { get; set; }
public DbSet<ProfileModels> PersonDetails { get; set; }
}
Profile
由于LazyLoading
而在此处为空。这允许我们拥有一个包含许多不同对象的对象,这些对象仅在需要时加载,而不是在加载父对象时加载。如果用户具有类似于Comments属性的内容,这将特别有用。如果没有LazyLoading
,只要您想获取VideoModels.ID
,就会加载注释集合。LazyLoading
的一个缺点是,执行的每个导航都需要对数据源进行单独的查询
要允许懒散加载,您需要将相关对象属性标记为虚拟。
此外,必须在上下文中提供导航属性:
public class Database : DbContext {
public DbSet<VideoModels> People { get; set; }
public DbSet<ProfileModels> PersonDetails { get; set; }
}
请给出你如何检索数据的代码示例。它已经回答了,我忘记了关键定义。请给出你如何检索数据的代码示例。它已经回答了,我忘记了关键定义