【问题标题】:UseSelection is causing an extra sql statement to fireUseSelection 导致触发额外的 sql 语句
【发布时间】:2020-07-21 04:06:22
【问题描述】:

我已将 hotchoc 全部连接到 EF 和 sqlserver 数据库。这是我的查询...

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 表有很多字段,但没有任何可疑之处。

【问题讨论】:

  • 能否添加account和holding的表结构以及它们的EF模型定义?
  • 更新了我的帖子。

标签: graphql hotchocolate


【解决方案1】:

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

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

除了与馆藏的联接在有或没有 [UseSelection] 的情况下都可以工作。

【讨论】:

猜你喜欢
  • 2011-04-15
  • 1970-01-01
  • 2012-03-28
  • 2021-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-25
  • 1970-01-01
相关资源
最近更新 更多