2009-10-01 4 views
1

J'ai deux tables. Lié avec une clé étrangère.LinqToSql - Inclure l'objet lié dans le résultat sélectionné

linked tables http://i33.tinypic.com/15znlw1.jpg

Maintenant, je lu une ligne de la table de terrain:

IField Field = from f in DataContext.fields 
       where f.mapId == mapId && f.x1 == x && f.y1 == y 
       select f; 

Travailler avec cette ligne que j'ai besoin des données des fieldViews de table liée. Donc, je fais juste somthing comme ceci:

[..] Field.FieldViews [..] 

Selon le Générateur de profils SQL Pour Sql génère Linq les requêtes suivantes.

SELECT 
    [t0].[fieldId], 
    [t0].[mapId], 
    [t0].[x1], 
    [t0].[y1] 
FROM 
    [dbo].[fields] AS [t0] 
WHERE 
    ([t0].[mapId] = @p0) AND 
    ([t0].[x1] = @p1) AND 
    ([t0].[y1] = @p2) 


SELECT 
    [t0].[fieldViewId], 
    [t0].[fieldId], 
    [t0].[mapUserId] 
FROM 
    [dbo].[fieldViews] AS [t0] 
WHERE 
    [t0].[fieldId] = @p0 

Mais je ne veux pas 2 requêtes. Comment puis-je faire en sorte que LinqToSql inclue cet objet lié dans la première requête?

Répondre

3

En utilisant le DataLoadOptions, vous pouvez spécifier que L2S chargera les enregistrements FieldViews avec les champs.

Insérer quelque chose comme ça avant que la requête:

var dlo = new DataLoadOptions(); 
dlo.LoadWith<Fields>(f => f.FieldViews); 
DataContext.LoadOptions = dlo; 

Le serveur exécutera deux requêtes, mais dans le même appel au serveur.

+0

merci! cela fonctionne exactement comme prévu! – rkusa

Questions connexes