2009-03-02 8 views
2

Considérons la procédure stockée suivante:De retour des types anonymes de la procédure stockée avec LINQ2SQL

SELECT * FROM Customers; 

SELECT Customer.Id, Customer.Name, Order.Total, Order.DateOrdered 
FROM Customers INNER JOIN Orders ON Customers.Id = Orders.CustomerId; 

La procédure renvoie évidemment deux jeux de résultats que je suis en train de récupérer avec cette méthode de classe partielle:

public partial class DBSproc : DataContext 
{ 
    [Function(Name = "dbo.spGetCustomersAndOrders")] 
    [ResultType(typeof(Customer))] 
    // What type should I use here for the second resultset? 
    [ResultType(typeof(... what here? ...))] 
    public IMultipleResults GetCustomersAndOrders() 
    { 
     IExecuteResult result = 
      this.ExecuteMethodCall(this, 
       ((MethodInfo)(MethodInfo.GetCurrentMethod()))); 

     return (IMultipleResults)(result.ReturnValue); 
    } 
} 

Je comprends que le premier jeu de résultats sera mappé à l'entité Client, mais qu'en est-il du second? Le second est un select personnalisé, combinant plusieurs colonnes de plusieurs tables. Je n'ai pas d'entité avec ces propriétés.

Dois-je créer une entité fictive uniquement pour ce jeu de résultats? J'espérais pouvoir utiliser des types anonymes pour de telles requêtes ad-hoc.

Merci.

+1

honte de voir cette question sans réponses "utiles", j'espérais qu'il y en aurait une! – Jon

Répondre

0

En règle générale, vous pouvez renvoyer des types anonymes d'une méthode uniquement lorsque le type de retour est "objet". Ensuite, le code appelant n'a aucune idée des propriétés de vos types anonymes, sauf s'il utilise la réflexion. Donc, oui, vous pouvez utiliser des types anonymes, mais vous ne voulez probablement pas, parce que ce n'est pas très utile.

+0

Son utile lorsque vous voulez retourner le même objet que json – om471987