多層 ASP.NET MVC Web アプリケーションを開発していますが、アプリケーション内のデータの正確なオブジェクト表現を取得できないため、それ以上進めることができません。これはなぜですか?なるべく詳しく書いてみましたが、詳しく知りたい方はご質問ください。私のプロジェクトは次のとおりです。
-MyProject.Data
-MyProject.Logic
-MyProject.Objects
-MyProject.Web
MyProject.Objects.Entitiesからのエンティティ クラス
public class Report
{
[Key]
public int Id { get; set; }
public string ReportName { get; set; }
public int ProductId { get; set; }
}
public class Product
{
[Key]
public int Id { get; set; }
public string ProductName { get; set; }
public ICollection<Report> ProductReports { get; set; }
}
MyProject.Dataからの私のコンテキスト
public class MyDb : DbContext
{
public DbSet<Product> Products { get; set; }
public DbSet<Report> Reports { get; set; }
}
MyProject.Webのコントローラー
public class HomeController : Controller
{
MyDb _db = new MyDb();
public ActionResult Index()
{
var model =
from p in _db.Products
orderby p.ProductName ascending
select p;
return View(model);
}
}
最後に、MyProject.Data.Migrations.ConfigurationSeed()
からの私のメソッド
protected override void Seed(MyProject.Data.MyDb context)
{
context.Products.AddOrUpdate(r => r.ProductName,
new Product
{
ProductName = "AAA",
ProductReports =
new List<Report> {
new Report { ReportName = "Report A" },
new Report { ReportName = "Report B" },
new Report { ReportName = "Report C" }
}
},
new Product
{
ProductName = "MSI",
ProductReports =
new List<Report> {
new Report { ReportName = "Report X" },
new Report { ReportName = "Report Z" }
}
});
}
MyProject.Objects.Entities.ProductICollection<Report> ProductReports
から正しい値を取得できない理由がわかりません。MyProject.Webでの結果は次のとおりです。Index()
このフレームワークに少し慣れていないので、最初はデータ構造に関連する問題があると思いました。私の知る限り、データは正しく設定されているようです。これがSQLサーバーの私のデータです
データが正しいように見えることをさらに実証するために、次のクエリを実行して、リレーションが適切に設定されていることを確認しました。クエリと一緒に結果を提供します。
SELECT * From Reports INNER JOIN Products ON Reports.ProductId = Products.Id