私のプロシージャはすべての結果を返しますが、MVC はルックアップが null であることを示しています。
ループの「グリッド」が次のように見えるビューがあります。
@foreach (var item in Model) {
<tr>
<td>@Html.ActionLink(item.Headline, "ViewDetails", "Advisory", new { id=item.AdvisoryId }, "")</td>
<td>@item.AdvisoryStartDate.ToShortDateString()</td>
<td>@item.AdvisoryType.AdvisoryType</td>
<td>@item.AdvisoryProvider.AdvisoryProvider</td>
<td>@item.AdvisoryCategory.AdvisoryCategory</td>
</tr>
}
最後の 3 つのフィールドはルックアップです。最初に、このコントローラー呼び出しでこれを設定しました。
var advisories = db.Advisories.Include(i => i.AdvisoryType)
.Include(i => i.AdvisoryProvider)
.Include(i => i.AdvisoryCategory)
.OrderByDescending(i => i.AdvisoryStartDate);
ViewData["Advisories"] = advisories;
しかし、これをこの proc 呼び出しに置き換えました (ユーザーがまだ見ていない「アドバイス」を取得する必要があるため、上記よりも複雑で、基本的には「すべて取得」です。また、クエリを実行する必要がありますUserID による DB に対して、MVC には User.Identity.Name しかありません):
var results = db.Database.SqlQuery<Advisory>("EXEC [ponzi].[uspUserAdvisories] {0}", User.Identity.Name).ToList();
ViewData["Advisories"] = results;
proc がすべての結果を返すことはわかっていますが (SQL Server で実行すると)、MVC では、「結果」にマウスを合わせると、AdvisoryCategoryID が入力されますが、AdvisoryCategory は null です。他の 2 つのルックアップと同じです。AdvisoryCategoryID が Advisory モデルにあるためだと思いますが、 AdvisoryCategory は AdvisoryCategory モデルからのものです。
アドバイザリ モデルの関連部分は次のとおりです。
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int AdvisoryId { get; set; }
public virtual int AdvisoryTypeID { get; set; }
public virtual AdvisoryTypes AdvisoryType { get; set; }
public virtual AdvisoryProviders AdvisoryProvider { get; set; }
public virtual int AdvisoryProviderID { get; set; }
public virtual AdvisoryCategories AdvisoryCategory { get; set; }
public virtual int AdvisoryCategoryID { get; set; }
これら 3 つのルックアップ フィールドを取得して、proc によって返されたデータを表示するにはどうすればよいですか? ありがとう。