1

私は2つのテーブルを持っています:

仕事

  • 日にち
  • 時間
  • 従業員ID

従業員

  • 従業員ID
  • EmployeeBossId

EmployeeBossId は、上司などを持つ別の従業員を参照します。

所有者は無数の階層に属することができます (ただし、実際には 3 レベルだけです)。私は LINQ ステートメントの形で巧妙なデータベース呼び出しを探しています。これはEmployeeIdを受け取り、「サブ」従業員を含むその従業員のすべての時間の合計を教えてくれます- 各直接のサブ従業員によってグループ化されています!

  • ボブ
  • ジム
    • ジョーイ
    • アンソニー
      • ベン
      • リタ
    • シド
  • ダン
    • ハリー
    • サリー
  • マイク

Jim の EmployeeId を指定すると、Joey、Anthony (Ben と Rita の時間を含む)、および Sid の合計時間が必要になります。

私は少し質問していることを知っていますが、これを攻撃する方法を決定するのに苦労しており、他の誰かにそれが明らかであることを願っています. ありがとう。

1回のデータベース呼び出しですべてを実行できるようにしたいと考えています。

4

1 に答える 1

1

SQL Server はCommon Table Expressionsと呼ばれるものをサポートしています。これにより、基本的に「再帰クエリ」を実行できます。これは、親/親-親の問題を解決するために必要なものです。

残念ながら、これは Linq ではサポートされていません。ただし、それを行う方法はありますが、C# コードに (正確にはコンテキストで) SQL が必要です。この質問このハウツーを参照してください。

于 2012-08-01T12:37:35.833 に答える