2017-11-27 11 views
0

私はエンティティフレームワークを使って大学のプロジェクトをやっています。私はいくつかのJOINをやっています。私はこのジョインに私がやる方法がわからなくなるまでうまくやっていました。 実装が必要な機能の簡略化:ボタンがあり、クリックするとテーブルのすべての情報が表示される必要があるため、JOINを作成する必要があります。この目的のためにモデルを作成しました。このJOINを作成するにはどうすればよいですか?

これは私のSQLデータベースのスクリーンショットです: SQL Database

そして、これは私が 外部キーがAreaProcessoからですMetaEspecifica JOINを作るために必要なコードです:あなた場合

// GET: AreaProcesso/Details/5 
    public ActionResult Details(int? id) 
    { 
     if (id == null) 
     { 
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
     } 

     var item = (from ap in db.AreaProcesso 
        join mg in db.MetaGenerica on ap.IdAreaProcesso equals mg.IdMetaGenerica 
        join model in db.Modelo on ap.IdAreaProcesso equals model.IdModelo 
        from nc in db.NivelCapacidade 
        from c in db.Categoria 
        from me in db.MetaEspecifica 
        where ap.IdAreaProcesso == id.Value 
        select new AreaProcessoModelView() 
        { 
         SiglaMetaGenerica = mg.Sigla, 
         NomeMetaGenerica = mg.Nome, 
         DescricaoMetaGenerica = mg.Descricao, 
         Sigla = ap.Sigla, 
         Nome = ap.Nome, 
         Descricao = ap.Descricao, 
         SiglaModelo = model.Sigla, 
         NomeModelo = model.Nome, 
         DescricaoModelo = model.Descricao, 
         SiglaNivelCapacidade = nc.Sigla, 
         NomeNivelCapacidade = nc.Nome, 
         DescricaoNivelCapacidade = nc.Descricao, 
         NomeCategoria = c.Nome 
        }).FirstOrDefault(); 

     if (item == null) 
     { 
      return HttpNotFound(); // Or a return a view with message "item not found" 
     } 
     return View(item); 
    } 
+5

手動のジョインをしないで、ナビゲーションプロパティを使用しているはずです。 –

+0

だから問題は何ですか?何が助けを必要としますか? – CodingYoshi

+0

私はこれをやってみました: "me.IdAreaProcessoはap.IdAreaProcessoとdb.AreaProcessoで結合するap"ですが、すでに宣言されているp変数です! –

答えて

0

HTMLページにJSONを使用する必要があります。このセクションを表示ページの下に使用する

@section Scripts { 
    var jsonData= @Html.Raw(Json.Encode(Model.YourDataCollection)); 
} 

使用リターンJSONはあなたが

表示するにはMVCは、このページのみデータのシリアルページを表示されていないと言う場合

return Json(item, JsonRequestBehavior.AllowGet); 

は注意してください:DのJSONデータがブラウザで、あなたのコントローラを変更し、このようにJSONを返しますDetails.cshtmlファイルにはモデルは必要ありません。デザインページレイアウトがスクリプトセクションにこのスクリプトのみを追加した後

@section Scripts { 
    $.ajax({ 
     dataType: 'json', 
     url: '@Url.Action("Details")', 
     type: 'GET', 
     cache: false, 
     success: function(result) { 
      // use json result 
     } 
    }); 
} 
関連する問題