繁体   English   中英

基于“一对多”的反向关系映射使用实体框架和 GraphQl

[英]Inverse relationship mapping based on "one to many" using Entity Framework and GraphQl

我正在开发我的 API 的新版本,现在使用 GraphQL 来获得一些优势。

我有实体Partner ,它具有FarmList属性。 在这一点上是可以的,当我在我的 API 上调用Partners ,我可以获得他们的Farms

但是当我在 API 中调用Farms时,我希望它返回与之相关的Partner ,这就是我的问题。

我尝试在Farm上的ForeignKey之外的Partner上使用InverseProperty注释,但是对于Farm每个属性,我都收到以下错误消息:

期望在 Int32 上找到属性[attribute]但它不存在。

这是我的代码的一部分:

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]
}

我在那个发展中遗漏了一些细节吗?

这是一个遗留代码,因为它不遵循代码约定,我也不能更改Farm Partner属性。

在发布疑问时找到了解决方案(如 Rubber Duck Debugging)。

在 Schema 上,属性名称必须与类相同(我知道这似乎很明显,但请注意)。 在这种情况下,特别是架构似乎可以正常工作:

type Propriedade {
                    Codigo: ID,
                    ...
                    Parceiro: Parceiro
                }

type Partner {
                    Codigo: ID,
                    ...
                    // Here is the trick
                    Farms: [Farm]
                }

暂无
暂无

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

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