私はMVCを初めて使用するので、質問がばかげている、または単純すぎると思われる場合は、失礼します。データベースアクセスにエンティティデータモデルを使用しています。そのため、ModelsフォルダーにEDMXファイルを追加し、コントローラーと強く型付けされたビューからモデルクラスにアクセスできます。コントローラ内の複数のテーブルにアクセスすると、問題が発生します。
DBに次のテーブルがある場合:
Departments(DepartmentID, DepartmentName, DepartmentPhone)
Insurances(InsuranceID, InsuranceName, InsuranceAddress)
Employees(EmployeeID, EmpFName, EmpLName, DepartmentID, InsuranceID)
そして、従業員のリストとその部門および保険情報を表示したいと思います。
私のコントローラーのアクションメソッドでは、EDMを使用してDBにアクセスし、匿名タイプで情報を取得します。
using (var context = new MyEntities())
{
var model = (from d in context.Departments
join e in context.Employees on d.DepartmentID equals e.DepartmentID
join I in context.Insurances on I.InsuranceID equals e.InsuranceID
select new
{
DepartmentID = d.DepartmentID,
EmployeeID= e.EmployeeID,
EmpFName= e.EmpFName,
EmpLName= e.EmpLName,
DepartmentName= d.DepartmentName,
InsuranceName= I.InsuranceName
}).ToList();
return View(model);
}
Modelフォルダーにこの匿名タイプのクラスがないため、厳密にタイプされたビューを作成できません。では、このリストをビューに渡すための最良の方法は何ですか?コレクションが大きすぎる場合、viewbagを使用するのはやり過ぎになります。この匿名クラスの新しいモデルを作成することは、Controllers Action Methodで選択を変更した場合、常に更新する必要があるため、正しく聞こえません。
すべての提案を歓迎します。SOに関する他の質問を調べてみましたが、関連するものが見つかりませんでした。
ありがとう。