基于 "one to many" 使用 Entity Framework 和 GraphQl 的逆向关系映射
Inverse relationship mapping based on "one to many" using Entity Framework and GraphQl
我正在开发我的 API 的新版本,现在使用 GraphQL 以获得一些优势。
我有实体 Partner
,它有 List
属性 个 Farm
。在这一点上没关系,当我在 API 上调用 Partners
时,我可以得到他们的 Farms
.
但是当我在 API 中调用 Farms
时,我希望它 return 与它相关的 Partner
,这是我的问题。
我尝试在 Partner
上使用 InverseProperty
注释超越 Farm
上的 ForeignKey
,但对于 Farm
的每个属性我都收到以下错误消息:
Expected to find property [attribute] on Int32 but it does not exist.
这是我的部分代码:
public class Partner
{
...
[InverseProperty("PartnerOwner")]
public List<Farm> Farms{ get; set; }
}
public class Farm
{
...
[Key]
public int Codigo { get; set; }
[ForeignKey("PartnerOwner")]
public int Partner { get; set; }
public Partner PartnerOwner { get; set; }
}
架构:
type Propriedade
{
Codigo: ID,
...
Parceiro: Parceiro
}
type Partner
{
Codigo: ID,
...
CountryFarms: [Farm]
}
我是否遗漏了有关该开发的一些细节?
这是遗留代码,因为它不遵循代码约定,我也无法更改 Partner
属性 of Farm
。
在发布疑惑的同时找到解决方案(如Rubber Duck Debugging)。
在 Schema 上,属性名称 必须与 class 相同(我知道这似乎很明显,但要小心)。在这种情况下,特别是架构似乎可以正常工作:
type Propriedade {
Codigo: ID,
...
Parceiro: Parceiro
}
type Partner {
Codigo: ID,
...
// Here is the trick
Farms: [Farm]
}
我正在开发我的 API 的新版本,现在使用 GraphQL 以获得一些优势。
我有实体 Partner
,它有 List
属性 个 Farm
。在这一点上没关系,当我在 API 上调用 Partners
时,我可以得到他们的 Farms
.
但是当我在 API 中调用 Farms
时,我希望它 return 与它相关的 Partner
,这是我的问题。
我尝试在 Partner
上使用 InverseProperty
注释超越 Farm
上的 ForeignKey
,但对于 Farm
的每个属性我都收到以下错误消息:
Expected to find property [attribute] on Int32 but it does not exist.
这是我的部分代码:
public class Partner
{
...
[InverseProperty("PartnerOwner")]
public List<Farm> Farms{ get; set; }
}
public class Farm
{
...
[Key]
public int Codigo { get; set; }
[ForeignKey("PartnerOwner")]
public int Partner { get; set; }
public Partner PartnerOwner { get; set; }
}
架构:
type Propriedade
{
Codigo: ID,
...
Parceiro: Parceiro
}
type Partner
{
Codigo: ID,
...
CountryFarms: [Farm]
}
我是否遗漏了有关该开发的一些细节?
这是遗留代码,因为它不遵循代码约定,我也无法更改 Partner
属性 of Farm
。
在发布疑惑的同时找到解决方案(如Rubber Duck Debugging)。
在 Schema 上,属性名称 必须与 class 相同(我知道这似乎很明显,但要小心)。在这种情况下,特别是架构似乎可以正常工作:
type Propriedade {
Codigo: ID,
...
Parceiro: Parceiro
}
type Partner {
Codigo: ID,
...
// Here is the trick
Farms: [Farm]
}