gpt4 book ai didi

c# - 当我从 ApplicationDbContext 调用时外键对象返回 null

转载 作者:行者123 更新时间:2023-12-05 08:43:24 25 4
gpt4 key购买 nike

我在外键上遇到了问题。

我想要的是,对于每个视频模型,都有一个配置文件模型链接到它

一个这样的例子:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com