我在外键上遇到了问题。
我想要的是,对于每个视频模型,都有一个配置文件模型链接到它
一个这样的例子:
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 有任何联系,因为 VideoModels 依赖于 ProfileModels,并且可以有 0 到多的关系。
所以在我测试之后,我的 VideoModels 有一个 Profile_Id 参数,它是来自 ProfileModels 的外键
但是在创建一个对象并检索它之后,它返回 NULL 但是当我检查数据库时有一个现有的外键 ID。
请帮忙,卡在这里好几个小时了
最佳答案
由于 LazyLoading
,
Profile
在这里将为 null。这允许我们拥有一个包含许多不同对象的对象,这些对象仅在需要时加载,而不是在加载父对象时加载。如果您将 Comments 属性作为用户的一部分,这将特别有用。如果没有 LazyLoading
,评论集合将在您只想获取 VideoModels.ID
时加载。 LazyLoading
的缺点是执行的每个导航都需要对数据源进行单独查询。
要允许延迟加载,您需要将相关对象属性标记为虚拟。
此外,您必须在上下文中提供导航属性:
public class Database : DbContext {
public DbSet<VideoModels> People { get; set; }
public DbSet<ProfileModels> PersonDetails { get; set; }
}
或者
如果您想使用当前的类建模,可以通过禁用 LazyLoading
来实现。
this.Configuration.LazyLoadingEnabled = false;
关于c# - 当我从 ApplicationDbContext 调用时外键对象返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30548567/