[英]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.