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



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

这是作业对象应该得到的结果,但问题是它返回的值为空:参见照片-1

我提到成年人有特定的工作:见图2

我还尝试重建迁移、数据库,或者为对象所拥有的所有内容添加DbSet,但什么都没有。

遇到此问题,我无法更新或删除该对象。

应该是什么?

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

public class Adult
{
// ....

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

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

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

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使用阴影特性,或者也可以在Adult中定义FK字段,但由于列名不符合类型的命名约定,因此需要显式映射FK关系。(即JobId或Job_Id(

如果你的关系建立得很好,那么在加载成年人时就可以急于加载职称。

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

最新更新