Как я могу использовать Linq с файлами Dataset.xsd? - PullRequest
0 голосов
/ 22 декабря 2008

Как я могу использовать Linq с файлами Dataset.xsd?

Я смотрел на наборы Linq-to-Datasets и Linq-to-XSD, но, похоже, они не работают напрямую с файлами Visual Studio DataSet.xsd.

РЕДАКТИРОВАТЬ: Я действительно нашел отличную ссылку для этого: текст ссылки , но я не могу понять, что делать, если я хочу сделать запрос по связанным таблицам.

    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 это делает все это для меня, поэтому это немного разочаровывает)

Ответы [ 2 ]

2 голосов
/ 22 декабря 2008

DataSet - это просто контейнер для ваших данных, поэтому вам нужно сначала его заполнить. LINQ to SQL создаст SQL и перейдет к базе данных для вас ... но когда вы работаете с DataSets, вы используете LINQ to Objects , который не создаст SQL. Поэтому вам необходимо убедиться, что все таблицы, которые вам нужны в наборе данных, заполнены, прежде чем вы начнете писать LINQ для запроса вашего набора данных.

Я думаю, вы ищете что-то вроде этого:

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
0 голосов
/ 22 декабря 2008
   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

Вы забыли установить тип для полей. Вот почему у вас возникают проблемы со ссылками на объекты. Вам не нужно создавать новый пустой набор данных.

...