2017-05-08 32 views
0

私は以下のような三つのモデルを持っているを使用してEntity Frameworkの、3つのテーブルを結合し、グループの連結方式

public class Team 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 
    } 
    public class Document 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 
     public string Type { get; set; } 
     public string Application { get; set; } 
     public ICollection<DocumentResponsible> DocumentResponsibles { get; set; } 
     public string Pcda { get; set; } 
     public DateTime CreatedAt { get; set; } 
     public DateTime UpdatedAt { get; set; } 
    } 
    public class DocumentResponsible 
    { 
     public int Id { get; set; } 
     public int DocumentId { get; set; } 
     public int TeamId { get; set; } 
    } 

私は3つのテーブルを結合し、1内のすべての文書テーブルのフィールドとチーム名を選択するには、エンティティフレームワークの式を書きたいですドキュメントごとに1行。だから基本的に私は3つのテーブルgroup_concatチーム名を使用して参加したい。次に、Webフォームのgridviewにバインドします。

私が試してみました何

(from dc in DBContext.Document 
join dr in DBContext.DocumentResponsible on dc.Id equals dr.DocumentId 
join t in DBContext.Team on dr.TeamId equals t.Id 
select new 
{ 
    Name = dc.Name, 
    Type = dc.Type, 
    Application = dc.Application, 
    Pcda = dc.Pcda, 
}).ToList(); 

と私はちょうどそれを試してみましたが、

var data = DBContext.Dcoument.Include("DocumentResponsibles").Tolist(); 
+0

"DcoumentResponsibles"はそのように綴られていますか?それはあなたの命名の残りの部分に適合していないようです。 –

+0

ありがとう、私はタイプミスをしました。 –

答えて

0

それはあなたのDbContextとエンティティのマッピングせずに助けるのは難しいですが、私は上に行きますよあなたはちょうどDocument.DocumentResponsiblesをバーチャルとしてマークしたいと言っていると言います。

また、DocumentResponsibleで、多分あなたは、あなたがキーに参加するあなたが仕事をしたいすべての時間を行う必要はありません。この方法で(あまりにも仮想としてマーク両方)DocumentTeamに1つのプロパティを追加したいと思いますEFはデータを適切に設定しておけばそれを実行します。

問題が解決しない場合は、以下の情報を質問に追加できますか?最初に、コンテキストクラスとマッピングがあります。第二に、var firstDocument = yoneylemDB.Document.First()を実行すると、firstDocumentはどのように見えるのですか?それはすべてのフィールドとプロパティが記入されていますか?奇妙なことはありますか?

関連する問題