繁体   English   中英

通过 API 方法请求时,从实体框架获取整个 object 时出现问题

[英]Problem getting the whole object from Entity Framework when requesting via API methods

我对 API 请求有疑问。 我试图从服务器到客户端获取整个 object,它被检索,但没有一些字段。

这是作业 object 应该得到的,但问题是它返回 null 值:见照片1

我提到成年人有这项特定的工作:见照片2

我还尝试重建迁移、数据库或为 object 拥有的所有内容添加 DbSet,但没有。

遇到这个问题,我无法更新或删除 object。

应该是什么?

您需要为 Adult 和 Job/JobTitle 类添加实体 class 定义。 原因可能是您没有在两者之间正确映射多对一关系,或者您禁用了延迟加载并执行了以下操作:

public class Adult
{
    // ....


    public Job JobTitle { get; set; } = new Job();
}

这将看到 EF 加载一个成人,但有一个初始化的空职位。 您应该只初始化一对多的 collections。

映射可以通过 DbContext OnModelCreating 中的 Attribute、EntityTypeConfiguration 或 modelBuilder 完成。 基于您的 model 的假设,它应该看起来像:

public class Adult
{
    [Key]
    public int Id { get; set; }
    // Other properties...

    [ForeignKey("JobTitleIdJob")]
    public virtual Job JobTitle { get; set; }
}

public class Job
{
    [Key]
    public int IdJob { get; set; }
    public string JobTitle { get; set; }
}

上面 JobTitle 上的 FK 使用了 shadow 属性,或者您也可以在 Adult 中定义 FK 字段,但是由于列名不符合类型的命名约定,因此需要显式映射 FK 关系。 (即 JobId 或 Job_Id)

如果您的关系设置正确,则可以在加载成人时预先加载职位。

var adult = context.Adults
    .Include(x => x.Job)
    .Single(x => x.Id == adultId);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM