TPM_TASKS
すべてのタスクを含む というテーブルと、すべてTPM_USER
のユーザーを含む というテーブルがあります。次に、1 人のユーザーへの 1 つのタスクの割り当てを格納するをTPM_USERTASKS
含む という名前のテーブルがあります。UserId
TaskId
TPM_USER
特定のエンティティに割り当てられているすべてのタスクを選択しようとしています。これまでのところ、私は試しました:
TPM_USER user = UserManager.GetUser(context, UserId); //Lookup the user in the DB
var tasks = (from t in context.TPM_TASK.Include("TPM_USER")
where t.TPM_USER.Contains<TPM_USER>(user)
select t);
ただし、これを反復しようとすると、実行時例外が発生します。
タイプ 'Entity.TPM_USER' の定数値を作成できません。このコンテキストでは、プリミティブ型 (Int32、String、および Guid など) のみがサポートされます。
TPM_USER オブジェクトを に渡すのは好きではないと思いますContains()
。これはおそらく、節ではなくネストされた SELECT ステートメントを生成する必要があるため、理にかなっていますがIN
、これはおそらく EF では実行できません。しかし、確かにこのようなクエリを実行する方法がありますよね?
注:頭のいい人なら、なぜクエリTPM_USERTASKS
を実行してからマッチングに参加しないのかと疑問に思うかもしれませんTPM_TASK
。ええと、私はこれをやりたいです。ただし、私は午前中ずっと EF に TPM_USERTASK モデルを生成させようとしてきましたが、そうはなりません。テーブルがモデル ストアに表示され、それに対してリレーションシップを定義できます。データベースから追加または更新できるエンティティのリストに表示されず、.EDMX ファイル全体を削除して再度作成しようとしました。多対多の関係で使用されるものは、スタンドアロンのエンティティにもならないのでしょうか?