gpt4 book ai didi

c# - 相关实体未加载

转载 作者:太空宇宙 更新时间:2023-11-03 23:34:29 24 4
gpt4 key购买 nike

我正在开始一个新的 Entity Framework 项目,我正在定义实体之间的关系。

我定义了这个简单的实体:

[Table("db_owner.Students")]
public partial class User
{
[Key]
public int Id { get; set; }

[Required]
[StringLength(50)]
public string Name { get; set; }

public int? SchoolClassId { get; set; }

[ForeignKey("SchoolClassId")]
public SchoolClass SchoolClass { get; set; }
}

[Table("db_owner.SchoolClasses")]
public partial class SchoolClass
{
[Key]
public int Id { get; set; }

[Required]
[StringLength(50)]
public string Name { get; set; }
}

但是当我从数据库中检索一个 Student 时,SchoolClass 属性为空。

我还尝试在 DBContext 定义的 OnModelCreating 方法中指定关系,但没有任何变化:

modelBuilder.Entity<Student>()
.HasOptional(s => s.SchoolClass).WithMany().HasForeignKey(s => s.SchoolClassId);

我的代码有什么问题?

最佳答案

使用 virtual 关键字标记您的关系属性,以便 EF 的代理能够重载它:

[ForeignKey("SchoolClassId")]
public virtual SchoolClass SchoolClass { get; set; }

此外,确保上下文的 DbContext.Configuration.ProxyCreationEnabled 属性值设置为 true(默认情况下为)。

这两个条件可以延迟加载您的关系。

如果你想显式加载它们,使用包含机制。

关于c# - 相关实体未加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30998005/

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