2012-05-10 9 views
-1

私は次があります。EF MVC3と関連データを読み込む

public Class Vacancy{ 
    public int VacancyID {get;set;} 
    public List<Application> Applications {get;set;} 
} 
public Class Applicant{ 
    public int ApllicantID {get;set;} 
    public List<Application> Applications {get;set;} 
} 
public Class Application{ 
    public int ApplicationID {get;set;} 
    public int VacancyID {get;set;} 
    public int ApplicantID {get;set;} 
    public virtual Applicant Applicant {get;set;} 
    public virtual Vacancy Vacancy {get;set;} 
} 

、私は空室モデルのコントロールを作成しました。 私がしたいこと: 1)すべての空きを見る 2)空きが選択されたとき同じページにそのアプリケーションのリストを表示したい 3)前のステップからアプリケーションが選択されたら、応募者の詳細を取得したい 私は http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/reading-related-data-with-the-entity-framework-in-an-asp-net-mvc-application このチュートリアルを使用しようとしたが、それを、私はあなたがここに誰からそれをコーディングしないことをかなり確信している私は壁にぶつかると私は気圧

+0

*正確に*あなたは取得していません。これは "私はプログラミングの仕事を持っている、私のためにやってください"のように聞こえる。あなたの以前の質問は、同様にあいまいで、下落して最終的に閉鎖されました。 Stack Overflowで有意義な助けを得ることを望むなら、あなたの仕事(あるいはあなたの質問に少なくとも)にもっと力を入れなければなりません。 –

+0

通常のSQLクエリ (select * from Application where VacancyID = 123)(私はこれをPHPで使用します) この環境で関連するデータを取得する方法がわかりません。 –

+0

デフォルトでは、Entity FrameworkはLazy読み込み中、関連するデータがDBからオンデマンドで取り出されます。たとえば、空き状態で、そのプロパティはまだ読み込まれていない、それは自動的にオンザフライで読み込まれます。あなたの質問は、あなたが「何も得ていない」ことを知るのに十分ではありません。 –

答えて

3

とても困惑している。ここで、iは無いつもりですAZ。ここで私はあなたにいくつかの始まりを与えています。ソリューションの半分は私が提供しており、残りの部分を自分で行うことができます。

まず、コードにスペルチェックの問題があります。クラスキーワードは小文字にする必要があります。また、外部キー参照の作成には同じIDを使用する必要があります。 (アプリケーションクラスに主キーとしてApplicantIdがある場合は、アプリケーションクラスで同じスペルを使用する必要があります。エンティティフレームワークのコードは、そのような同じ名前が見つかると外部キー関係を作成します)。

「インデックス」と呼ばれるアクションを作成し、すべての欠員を一覧表示するには、あなたがこの

public class YourDBContext:DbContext 
{ 
    public DbSet<EFCodeFirst.Models.Vacancy> Vacancies { set; get; } 
    public DbSet<EFCodeFirst.Models.Applicant> Applicants { set; get; } 
    public DbSet<EFCodeFirst.Models.Application> Applications { set; get; } 
} 

ようDBContextクラスを持っていると仮定すると

public ActionResult Index() 
{ 
    YourDBContext db = new YourDBContext(); 
    var allVacancies = db.Vacancies.ToList(); 
    return View(allVacancies); 
} 

は、だから我々は我々が必要とするこのアクションのビューを持っている必要がありますすべての空席情報を表示します。だから、強く私たちはいくつかのAjaxの呼び出しを行うために使用されますjQueryライブラリの参照を含め、このビューでは、この

@model IEnumerable<EFCodeFirst.Models.Vacancy> 

<h2> All Vacancies </h2> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
<div id="divVacancies"> 
@foreach (var vacancy in Model) 
{ 
    <p> @Html.ActionLink(vacancy.VacancyID.ToString(), "GetApplications","Job", new { @id = vacancy.VacancyID }, new { @class = "ajaxLink" })</p> 
} 
</div> 

<div id="divApplications"></div> 

<script type="text/javascript"> 
    $(function() { 
     $(".ajaxLink").click(function (e) { 
      e.preventDefault(); 
      var target = $(this).attr("href"); 
      $("#divApplications").load(target); 
     }); 
    }); 
</script> 

のような空孔モデルのコレクションにタイプされたインデックスビューを追加します。同じページの選択された空席情報について、アプリケーション情報を表示するajaxを使用する必要があります。このためには、空きIDをパラメータとしてJob Controller内のGetApplicationsという別のアクションにasynchronousリクエストを行います。利用可能なすべての空席情報をループし、ここにアンカータグを作成しています。

ジョブコントローラに戻って、このようなGetApplicationsというアクションメソッドを作成します。理解することはかなり明確である

public ActionResult GetApplications(int id) 
    { 
     SampleContext db = new SampleContext(); 
     var allApplications = db.Applications.Where(x => x.VacancyID == id).ToList(); 
     return View(allApplications); 
    } 

、我々はビューにそれを返し、選択した空室のためのすべてのアプリケーションを取得するために照会されています。したがって、以下の内容のGetApplications.cshtmlというビューを作成する必要があります。

@model IEnumerable<EFCodeFirst.Models.Application> 
<h2>Applications </h2> 
@foreach (var application in Model) 
{ 
<p> @Html.ActionLink(application.ApplicantID.ToString(), "GetApplicants", new { @id = application.VacancyID, @class = "ajaxLink" })</p> 
} 

ストレートフォワード!結果をループで印刷するだけです。

それです。それは動作するはずです。 vacancyリンクをクリックすると、GetApplicationsメソッドをidパラメータとして呼び出し、そのアクションメソッドはHTMLマークアップ付きのビューを返し、その空きIDのすべてのアプリケーションを一覧表示します。

これを実行すると、2番目の部分を自分で作成することができます。それは同じ論理です。データを返す同様のGetApplicantsアクションメソッドを作成する必要があります。 グッドラック

:使用Firebug/fiddler(アヤックス)の要求がどのようなパラメータを持つアクションメソッドしようとしているかを確認します。これは、どのように動作するかを理解するのに役立ちます。

+0

ありがとう@Shyjuあなたは最高です –

+0

@ MoayadAl-sowayegh:それはあなたを助けてくれてうれしいです。 – Shyju

関連する問題