「@ foreach(モデルのvar item)」に関する私の見解では、「EntityCommandExecutionException was unhandled by user code」というこのエラーを回避できないようです。だから私はゼロから始めて、新しいプロジェクト - > ASP.NET MVC 3 Web アプリケーションを作成しました。この後、ADO.NET と LINQ を利用してデータベースにアクセスしようとしていたので、「Case.cs」のモデル クラスを追加しました。
Case.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace CustomerService.Models
{
public class Case
{
public int ID { get; set; }
public string Creator { get; set; }
public System.DateTime CreatedDate { get; set; }
public string CaseLead { get; set; }
public string CaseType { get; set; }
public string CaseSubType1 { get; set; }
public string CaseSubType2 { get; set; }
public string CaseStatus { get; set; }
public string CaseTitle { get; set; }
public string CaseDescription { get; set; }
public string CaseContact { get; set; }
public string CustomerID { get; set; }
public string LocationID { get; set; }
public string SystemID { get; set; }
}
}
次に、DbContext を「CSdb.cs」として追加しました。
CSdb.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
namespace CustomerService.Models
{
public class CSdb : DbContext
{
public DbSet<Case> Cases { get; set; }
}
}
次に、「CaseController.cs」という名前のコントローラーを追加しました
CaseController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using CustomerService.Models;
namespace CustomerService.Controllers
{
public class CaseController : Controller
{
//
// GET: /Case/
CSdb db = new CSdb();
public ActionResult Index()
{
var model = db.Cases;
return View(model);
}
}
}
最後に、"Index.cshtml" という名前の CaseController.cs のインデックス ビューを追加しました。
インデックス.cshtml
@model IEnumerable<CustomerService.Models.Case>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
<th>
Creator
</th>
<th>
CreatedDate
</th>
<th>
CaseLead
</th>
<th>
CaseType
</th>
<th>
CaseSubType1
</th>
<th>
CaseSubType2
</th>
<th>
CaseStatus
</th>
<th>
CaseTitle
</th>
<th>
CaseDescription
</th>
<th>
CaseContact
</th>
<th>
CustomerID
</th>
<th>
LocationID
</th>
<th>
SystemID
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Creator)
</td>
<td>
@Html.DisplayFor(modelItem => item.CreatedDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.CaseLead)
</td>
<td>
@Html.DisplayFor(modelItem => item.CaseType)
</td>
<td>
@Html.DisplayFor(modelItem => item.CaseSubType1)
</td>
<td>
@Html.DisplayFor(modelItem => item.CaseSubType2)
</td>
<td>
@Html.DisplayFor(modelItem => item.CaseStatus)
</td>
<td>
@Html.DisplayFor(modelItem => item.CaseTitle)
</td>
<td>
@Html.DisplayFor(modelItem => item.CaseDescription)
</td>
<td>
@Html.DisplayFor(modelItem => item.CaseContact)
</td>
<td>
@Html.DisplayFor(modelItem => item.CustomerID)
</td>
<td>
@Html.DisplayFor(modelItem => item.LocationID)
</td>
<td>
@Html.DisplayFor(modelItem => item.SystemID)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
@Html.ActionLink("Details", "Details", new { id=item.ID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.ID })
</td>
</tr>
}
</table>
これをデバッグしてこのビューに移動すると、「EntityCommandExecutionException was unhandled by user code - コマンド定義の実行中にエラーが発生しました。詳細については内部例外を参照してください」というエラーが表示され、このメッセージは「@foreach( var item in Model) {" ケースのインデックス ビューに表示されます。また、Code First を使用しようとしているため、テーブルはまだ作成されていませんが、ビルド ソリューションにヒットしました。
どんな推奨事項も大歓迎です。ありがとう