ASP.NET MVC 3 응용 프로그램 (C#)을 실행하고 있습니다.EF 4에서 외래 키 객체를로드하지 않습니다.
최근 데이터베이스에서 null 허용 가능 외래 키를 만들었습니다. 이것은 아마도 모범 사례는 아니지만 내 시나리오에서는 필요합니다. 그래서 지금 내 보고서 (ASPX View Engine)를 표시하면 db에 nullable로 만든 객체의 값이 표시되지 않습니다. 다음
지금 (단순화 된) 데이터 구조는 다음
Inventory
________________
InventoryID int PK
ShopID FK int NOT NULL
ProductID FK int NULL
이 유일한 변화는 제품 ID는 Null을 허용하지로 사용한다는 것이다. 다음과 같이
내 ActionResult은 다음과 같습니다
[HttpPost]
public ActionResult InventoryReport(FormCollection formVariables, InventoryReportRequest reportRequest)
{
ModelContainer ctn = new ModelContainer();
var query = ctn.Inventory.Where(ic => !ic.Deleted && ic.ShopID == reportRequest.ShopID);
if (reportRequest.ProductID.HasValue)
{
query = (from ic in query
where reportRequest.ProductID == ic.ProductID
select ic);
}
List<Inventory> checks = query.ToList();
if (checks.Count > 0)
{
return View(checks);
}
else
{
return RedirectToAction("Index");
}
}
나는이 작업 불구하고 디버깅 할 때, 나는 제품 ID가 검색되는 것을 볼 수 있지만 제품 객체가 null 남아있다. 따라서 내 결과로 내 결과를 표시하고 싶을 때 -
<table class="normal" width="100%">
<tr>
<th>
Date
</th>
<th>
Shop
</th>
<th>
**Product Name**
</th>
<th>
**Product ID**
</th>
<th>
Active
</th>
</tr>
<% foreach (var item in Model) { %>
<tr>
<td>
<%: Html.DisplayFor(modelItem => item.DateChecked) %>
</td>
<td>
<%: Html.DisplayFor(modelItem => item.Shop.Name) %>
</td>
<td>
**<%: Html.DisplayFor(modelItem => item.Product.Name) %>**
</td>
<td>
**<%: Html.DisplayFor(modelItem => item.Product.ProductID) %>**
</td>
<td>
<%: Html.DisplayFor(modelItem => item.Active) %>
</td>
</tr>
<% } %>
</table>
별표 표시된 항목은 공백으로 표시됩니다.
이 문제를 해결하기 위해 필요한 조치에 대해 조언을 제공 할 수 있습니까? 더 많은 정보가 필요하면 그냥 물어보십시오 :
이 'var query = ctn.Inventory..Include ("Shops")를 시도하십시오. (ic =>! ic.Deleted && ic.ShopID == reportRequest.ShopID);'적절한 변경 사항을 쿼리에 추가합니다 DB에. – Saravanan
@ saravanan 답장을 보내 주셔서 감사합니다. 나는 그 결과를 아무리 시도해 보았습니다. S – 109221793
Gert Arnold가 지적했듯이 컨텍스트에서 제품을 포함 시켰습니까? 코드를 디버그하고 적절한 연결에서 값을 얻었습니까? – Saravanan