0

我将 hotchoc 全部连接到 EF 和 sqlserver db。这是我的查询...

query
{
  accounts {
    holdings {
      holdingId
    }
  }
}

如果我的帐户方法中没有 [UseSelection],则 sql 语句会提取帐户表上的所有字段,但不会加入馆藏。如果我将 [UseSelection] 放在帐户上,那么它会正确选择我想要的字段并加入控股以获得holdingId。但是,它也会触发这个 sql 语句......

SELECT [e].[AccountID]\r\nFROM [Accounts] AS [e]\r\nORDER BY [e].[AccountID]

这个额外的 sql 语句是做什么用的?我做错了什么吗?

我的帐户实体...

public class Account : BaseEntity
    {
        public Account()
        {
            AccrualTransactions = new HashSet<AccrualTransaction>();
            Transactions = new HashSet<Transaction>();
            Holdings = new HashSet<Holding>();
        }

        public int AccountId { get; set; }
        public string AccountName { get; set; }
        public string AccountNumber { get; set; }

        public ICollection<Transaction> Transactions { get; set; }
        public ICollection<Holding> Holdings { get; set; }
    }

表结构非常简单。Holdings 表有一个 AccountId。Account 表有很多字段,但没有任何可疑之处。

4

1 回答 1

0

您是在 Resolver 方法中使用 [Parent] 属性还是在解析器 Func 中使用 context.Parent ?

这将导致获取父(在您的情况下为帐户)ID。

除此之外,无论是否使用 [UseSelection],与馆藏的联接都可以使用。

于 2020-09-07T13:52:49.013 回答