2009-05-12 28 views
1

ASP.NET MVC(および一般的なMVC)とオンラインで見つかったすべてのヘルプは、複数のテーブル間の関係ではなく、単一のテーブルを使用していることを実証しています。私は関連するエンティティも返すべきであると期待しているクエリを実行していますが、それはありませんし、私が逃しているものを把握することはできません。私はあなたの助けに感謝します!エンティティを選択しても関連するエンティティが選択されない

私は、次のデータを持っている:

Ticket 
    TicketID CompanyID Subject ... 
    -------- --------- ------- 
    1   1   "stuff" 
    2   1   "things" 

Company 
    CompanyID Name  ... 
    --------- -------- 
    1   "FredCo" 

だから、すべてのチケットは、特定の会社にリンクされています。私はTicketsのDetailsビューを作成しようとしています。会社名を表示したいのですが。ここに私が現時点で設定しているものがあります。

モデル

TicketエンティティとCompanyエンティティ、および関連があるが、それらの間のCompanyTicketと呼ばれます。ナビゲーションプロパティはTicket.CompanyとCompany.Ticketsです。関連のマッピングの詳細は

、私が持っている:

Maps to Ticket 
    Company.CompanyID <-> CompanyID 
    Ticket.TicketID <-> TicketID 

コントローラ

マイTicketController.Details方法は、次のようになります。

public ActionResult Details(int id) 
{ 
    var tickettoview = (from m in _db.Ticket 
         where m.TicketID == id 
         select m).First(); 
    return View(tickettoview); 
} 

編集:後マーク・ハミルトンの提案を見て、問題が私の質問であることを認識します。リターンにブレークポイントを設定すると、tickettoviewには顧客が設定されていないことが示されます。だから、これはそれを絞り込んでいますが、私はまだ会社の属性を設定する方法がわかりません。

もう一度、ありがとうございます!

+0

はい、スタックトレースは素晴らしいでしょう。 –

答えて

2

Mattの答えは私にこれに必要な語彙を与え、最終的にはthis pageに私を連れて来ました。データセットに.Include("Company")を追加すると、Companyプロパティが設定されました。

var tickettoview = (from t in _db.Ticket.Include("Company") 
        where t.TicketID == id 
        select t).First(); 
1

これは私がthis questionと尋ねたときと同じ問題のようです。どのように修正したのか説明したanswer I postedを参照してください。

Linq to EntitiesではなくLinqをSQLに使用していましたが、DataLoadOptionsおよびLoadWithメソッド(またはそのようなもの)がまだ動作していると仮定しています。私が間違っていれば、Entity Frameworkについてもっと知っている人が私を修正できます。

+0

DataLoadOptionsの使い方は分かりませんが、問題はコントローラ内にあり、クエリはサブクエリを実行していません。私は私の質問を編集します。 –

+0

ああ! "Linq to entities"はGoogleで答えを見つけるのに必要な語彙でした。ありがとう。 –

関連する問題