2016-06-27 7 views
0

私はMVCスキャフォールディングを使用してASP.NETにいます。私は、私が表示したい外部キーを持っている外部キーを持っているテーブルを持っています。それはちょっと混乱します。ASP.NET MVCで外部キーが表示されます

ManufacturerModelIDの外部キーによってManufacturerModelテーブルにリンクされたデバイステーブルがあります。 ManufacturerModelテーブルは、ManufacurerModelIDの主キー、ManufacturerIDの外部キー(Manufacturerテーブルからの)、および単なるModelフィールドで構成されています。私のデバイスインデックス画面では、デバイスの製造元(Manufacturerテーブルから)とモデルを表示したいと思います。現在、モデルを正しく表示しますが、メーカーを追加しようとすると、列ヘッダーを含むManufacturerModelレコード全体が表示されます。以下のデバイスインデックスのためのコントローラのActionResult()私が持って

:私はメーカーとモデルのために、次のしている私のデバイスのインデックスに

var devices = db.Devices.Include(d => d.DeviceType).Include(d => d.ManufacturerModel); 
return View(devices.ToList()); 

<th> 
    @Html.DisplayNameFor(model => model.ManufacturerModel.ManufacturerID) 
</th> 
<th> 
    @Html.DisplayNameFor(model => model.ManufacturerModel.Model) 
</th> 
+0

エンティティframworkeとデータベースの最初のアプローチを使用していますか? – Hadee

+0

はい私は両方を使用しています –

答えて

0

それはので、あなたのテーブルであります関係。あなたのデバイスはManufacturerModelと直接関係していません。あなたの関係は、devices> DeviceType> ManufacturerModelに基づいています。

VARデバイス= db.Devices.Include(D => d.DeviceType).INCLUDE(D => d.DeviceType.ManufacturerModel)を試してみてください。

+0

DeviceTypeの下の選択肢ではないため、 'd.DeviceType.ManufacturerModel'を追加することはできません。彼らは2つの異なるテーブルです。 'd.ManufacturerModel.Manufacturer'を追加すると、返されたView(devices.ToList());でエラーが発生しました。 –

+0

これは単なるサンプルです。 devicetypeテーブルを介してManufacturerModelテーブルにアクセスする必要があります。 devicetypeでオブジェクト名をチェックするだけです。 – Hadee

+0

ありがとう、私はそれを働かせた –

1

私が正しく理解している場合ので、あなたは

デバイス持っている - このような場合は、キーと外部キーが正しくされている場合>メーカー

- [ManufacturerModel] - > ManufacturerModel - [ManufacturerID]モデルにDeviceというクラスがあり、ManufacturerModelというプロパティがあり、Manufacturerというプロパティがあり、これにはManufacturerテーブルの列に関連するプロパティが含まれています。私は(参加)クエリを作成するときに、あなたも含める必要があります、あなたはそれぞれNameプロパティと列を持っていて、その後、

<tr> 
    <th> 
     @Html.DisplayNameFor(model => model.ManufacturerModel.Manufacturer.Name) 
    </th> 
    <th> 
     @Html.DisplayNameFor(model => model.ManufacturerModel.Model) 
    </th> 
</tr> 
<tr> 
    <td>@model.ManufacturerModel.Manufacturer.Name</td> 
    <td>@model.ManufacturerModel.Model</td> 
<tr> 

のようなものを表示することを

var devices = db.Devices 
    .Include(d => d.DeviceType) 
    .Include(d => d.ManufacturerModel) 
    .Include(d => d.ManufacturerModel.Manufacturer) 
よう Manufacturerテーブルをasumeます
+0

ありがとう、私のために働いた。 –

関連する問題