Linq to SQL Design的问题

cdo*_*ner 5 asp.net data-binding controls linq-to-sql

我经常需要组合来自多个表的数据并在GridView控件中显示结果.

我可以在Page_load事件中内联编写Linq查询,返回一个匿名类型,它结合了我需要的所有字段,并将结果数据绑定到GridView控件.

  • 问题:我使用Scott Guthrie在他博客上描述的'帮助方法' .这样的帮助方法不能返回匿名类型.该查询必须内联于此方法.

我可以编写一个数据库视图来返回我需要的数据,并编写一个帮助器方法,对它返回的这个(新的和已知的)类型进行查询.

  • 问题:我的数据库模式中需要很多视图,我将介绍我的数据的许多冗余方面.我也失去了使用Linq的一些优势 - 从数据库中删除所有业务逻辑.

我想采取一种方法,让我将Linq查询保存在辅助方法中,但允许我在各自的数据绑定表达式中访问网格上所需的所有属性.可以这样做吗?

cdo*_*ner 1

我问错了问题,就像我经常做的那样。促使我研究匿名类型的原因是 GridView 的一个明显限制 - 我无法在<asp:BoundField>(DataField 参数只接受 Linq 查询引入的表的列名称) 中使用数据绑定表达式。

事实证明,在 TemplateField 中可以使用 Eval 并访问 Linq 数据项的成员,并且 Linq 会为我处理查询。换句话说,我可以将查询保留在辅助方法中,让它返回主数据库表类型(例如帐户),然后将帐户绑定到 GridView。在数据绑定表达式中,我可以访问驻留在其他表中的 Account 对象的数据成员,而无需在查询中显式地将它们拉入。完美的。