.net 使用LINQ迭代数据库并生成模式+;数据
有没有一种简单的方法让LINQ遍历表中的每个字段并获取字段属性,如字段名?基本上,我只想创建一个表示db模式的简单xml文档,如下所示:.net 使用LINQ迭代数据库并生成模式+;数据,.net,linq,linq-to-xml,database-schema,.net,Linq,Linq To Xml,Database Schema,有没有一种简单的方法让LINQ遍历表中的每个字段并获取字段属性,如字段名?基本上,我只想创建一个表示db模式的简单xml文档,如下所示: <report> <nameoffirsttable> <field1name>field1data</field1name> <field2name>field2data</field2name> ...
<report>
<nameoffirsttable>
<field1name>field1data</field1name>
<field2name>field2data</field2name>
...
<field234name>field234data</field234name>
</nameoffirsttable>
<nameofsecondtable>
...
</nameofsecondtable>
<anothersecondtable>
...
</anothersecondtable>
</report>
Field1数据
Field2数据
...
字段数据
...
...
到目前为止,我在web搜索中看到的所有示例都显示了对命名字段的显式引用。这将生成您使用LINQ概述的模式:
XElement report = new XElement("report",
MyDataContext.Mapping.GetTables()
.Select(i =>
new XElement(i.TableName,
i.RowType.DataMembers
.Select(j => new XElement(j.Name, j.DeclaringType.Type.Name))));
只需确保引用System.Data.Linq和System.Xml.Linq.A
System.Data.DataSet
具有方法WriteXml
和WriteXmlSchema
,这些方法可以将数据集中的表作为Xml写出。这显然不是LINQ,所以我在评论中提到了它,不是作为一个答案,但也许它满足了您的需要。谢谢!这是一个很好的例子,演示了如何迭代模式。还需要一些技巧来关联数据,而不是使用字段的表名(j.DeclaringType.Type.name)。然而,这回答了我的问题,帮助我知道要搜索什么!