【发布时间】:2010-09-09 03:04:47
【问题描述】:
一直在试用 .NET 3.5 附带的新动态数据站点创建工具。该工具使用 LINQ 数据源从数据库中获取数据,并使用 .dmbl 上下文文件作为参考。我对自定义数据网格很感兴趣,但我需要显示来自多个表的数据。有谁知道如何使用 LINQ 数据源对象来做到这一点?
【问题讨论】:
标签: linq linq-to-sql .net-3.5 dynamic-data
一直在试用 .NET 3.5 附带的新动态数据站点创建工具。该工具使用 LINQ 数据源从数据库中获取数据,并使用 .dmbl 上下文文件作为参考。我对自定义数据网格很感兴趣,但我需要显示来自多个表的数据。有谁知道如何使用 LINQ 数据源对象来做到这一点?
【问题讨论】:
标签: linq linq-to-sql .net-3.5 dynamic-data
如果表通过外键连接,您可以轻松引用这两个表,因为它们将由 linq 自动连接(如果您查看 dbml 并且有一个连接表的箭头,您可以轻松看到) - 如果没有,看看能不能加一个。
为此,您可以使用以下内容:
<%# Bind("unit1.unit_name") %>
在表中,'unit' 有一个引用另一个表的外键,你提取了 'unit_name' 的 'unit' 属性
我希望这是有道理的。
【讨论】:
(编辑误解了问题,修改了我对以下的回答)
您的 LinqDataSource 可以指向一个视图,这样您就可以克服无法在实际元素中表达 Join 的问题。来自"How to: Create LINQ to SQL Classes Mapped to Tables and Views (O/R Designer)":
O/R 设计器是一个简单的对象关系映射器,因为它仅支持 1:1 映射关系。也就是说,一个实体类与数据库表或视图只能有1:1的映射关系。不支持复杂的映射,例如将一个实体类映射到多个表。但是,您可以将实体类映射到连接多个相关表的视图。
【讨论】:
您不能在一个数据网格上放置多个对象/数据源。您将必须构建一个单独的 ConceptObject,它结合了部件实体的公开属性。尝试使用 DB -> L2S 实体 -> ConceptObject。如果DB模型匹配ConceptObject field-for-field,你一定很做作。
【讨论】:
当您不想执行更复杂的 Linq 并将您的 Grid 绑定到 ObjectDataSource 时,最好使用 ObjectDataSource。 但是,您确实需要注意可能会给您带来麻烦的匿名类型,但一切皆有可能......
【讨论】: