2008-12-22 16 views
0

Comment utiliser Linq avec des fichiers Dataset.xsd? J'ai regardé Linq-to-Datasets et Linq-to-XSD mais ils ne semblent pas vraiment fonctionner directement avec les fichiers Visual Studio DataSet.xsd.Comment puis-je utiliser Linq avec des fichiers Dataset.xsd? Comment utiliser Linq avec des fichiers Dataset.xsd?

EDIT: j'ai trouvé un lien pour cela: link text mais je ne peux pas à comprendre ce qu'il faut faire si je veux interroger sur les tables connexes.

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 

Je reçois une "Référence d'objet non définie sur une instance d'un objet". erreur lors de l'exécution du code ci-dessus car, je suppose, field.FieldTypeRow.FieldTypeLabel ne fait pas partie de la requête de données. Dois-je créer une méthode qui renvoie également des données à partir de ces données? Je suppose que ce serait le cas (que taFields.GetData doit retourner tous les résultats de données FieldType aussi si je vais le référencer - dans Linq to SQL il fait tout ça pour moi donc c'est un peu décevant)

Répondre

2

Un DataSet est juste un conteneur pour vos données, vous devez donc le remplir en premier. LINQ to SQL va créer SQL et aller à la base de données pour vous ... mais lorsque vous travaillez avec DataSets, vous utilisez LINQ to Objects, ce qui ne créera pas SQL. Vous devez donc vous assurer que toutes les tables dont vous avez besoin dans le DataSet sont remplies avant de commencer à écrire LINQ pour interroger votre DataSet.

Je pense que vous cherchez quelque chose le long de ces lignes:

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
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 

Vous avez oublié de définir le type pour les champs. C'est pourquoi vous obtenez des problèmes de référence d'objet. Vous n'avez pas besoin de créer un nouveau jeu de données vide.

+0

Ce code me donnait toujours la même erreur – EdenMachine

+0

Je devais le changer en TestDS.FieldDataTable sur la deuxième ligne parce que c'est ce que le type est pour taFields.GetData(). Le code de Kyralessa a fonctionné pour moi cependant - merci! – EdenMachine

Questions connexes