我在ASP.Net MVC中使用LINQ to SQL(SQL Server)。我的页面需要显示每个区域内的所有区域和所有办公室(嵌套)。办公室属于郊区,而郊区又属于某个地区。即在每个区域内,我需要抓住存在于郊区内的办公室,这些办公室属于循环中的当前区域。
(伪代码)
foreach(Region currentRegion in Regions) { Display Region's Heading foreach(Office currentOffice in ALL OFFICES WHICH BELONG TO SUBURBS WHICH BELONG TO THIS REGION) { Display Office Name } }
使用LINQ to SQL实现这一目标的最简洁的MVC范式是什么? (我是一个庞大的SQL粉丝,但我正在为这个项目使用LINQ to SQL)。
我不想只是为了做这么简单的事情而编写5个辅助类。我不是在寻找一个“完美的世界OO矫枉过正”的解决方案,干净,简约和简单是最好的。
我最好在Controller中汇总所有数据,这样我就不会得到一些与Controller责任等重叠的混乱视图。
答案 0 :(得分:0)
在你的情况下,
RegionModel
,SuburbModel
,OfficeModel
。视图看起来像这样(Spark)=>
<viewdata model="RegionModel region" />
<for each="var suburb in region.Suburbs">
<span each="var office in suburb.Offices">${office.Name}</span>
</for>
这是对“如何将嵌套数据传递到asp.net-mvc中查看?”的问题的答案。事情是 - 你的模型还不适合这个(Region类不直接与Suburbs,Suburbs with Offices绑定)。
所以 - 你需要确保你的Region包含Suburbs和Suburb包含的办公室。我不确定L2S,但在nhibernate中很容易 - 集合将按原样映射,默认情况下 - 保持延迟加载。 RegionController将负责正确使用RegionRepository,而RegionRepository应该提供急于加载郊区的可能性。按需办公。