如何将Linq与Dataset.xsd文件一起使用?
我查看了Linq-to-Datasets和Linq-to-XSD,但它们似乎并不直接使用Visual Studio DataSet.xsd文件。
编辑:我实际上找到了一个很棒的链接:link text但是如果我想查询相关的表格,我似乎无法弄明白该怎么做。
Dim taFields As New TestDSTableAdapters.FieldTableAdapter()
Dim fields = taFields.GetData()
Dim results = From f In fields Select f
For Each field In results
Response.Write(field.FieldID & " " & field.Label & " " & field.FieldTypeRow.FieldTypeLabel)
Next
我得到一个“对象引用未设置为对象的实例”。运行上面的代码时出错,因为我猜,field.FieldTypeRow.FieldTypeLabel实际上并不是数据查询的一部分。我是否必须创建一个从该数据返回数据的方法?我假设情况就是这样(如果我要引用它,taFields.GetData也必须返回所有FieldType数据结果 - 在Linq to SQL中它为我做了所有这些,所以它有点令人失望)
答案 0 :(得分:2)
DataSet只是数据的容器,因此您需要先填充它。 LINQ to SQL 将为您创建SQL并转到数据库...但是当您使用DataSet时,您正在使用 LINQ to Objects ,这赢得了'创建SQL。因此,在开始编写LINQ以查询DataSet之前,需要确保填充DataSet中所需的所有表。
我认为你正在寻找这些方面的东西:
Dim taFields As New TestDSTableAdapters.FieldTableAdapter()
Dim taFieldTypes As New TestDSTableAdapters.FieldTypesTableAdapter()
Dim ds As New TestDS
taFields.Fill(ds.Fields)
taFieldTypes.Fill(ds.FieldTypes)
Dim results = From f In ds.Fields Select f
For Each field In results
Response.Write( _
field.FieldID & " " & field.Label & " " &
field.FieldTypeRow.FieldTypeLabel)
Next
答案 1 :(得分:0)
Dim taFields As New TestDSTableAdapters.FieldTableAdapter()
Dim fields as TestDSTableAdapters.FieldsDataTable = taFields.GetData()
Dim results = From f In fields Select f
For Each field In results
Response.Write(field.FieldID & " " & field.Label & " " & field.FieldTypeRow.FieldTypeLabel)
Next
您忘记设置字段的类型。这就是你得到对象引用问题的原因。您不必创建新的空白数据集。