2009-03-02 6 views
2

でストアドプロシージャからの匿名型を返す次のストアドプロシージャを考えてみます。LINQ2SQL

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); 
    } 
} 
:手順は、明らかに私は、この部分クラスメソッドで取得しようとしている2つの結果セットを返す
SELECT * FROM Customers; 

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

私は、最初の結果セットがCustomerエンティティにマップされることを理解していますが、2番目の結果はどうでしょうか? 2つ目はカスタム選択で、複数のテーブルの複数の列を組み合わせます。私はこれらの特性を持つエンティティを持っていません。

その結果セットのためだけにダミーのエンティティを作成する必要がありますか?私は何とかそのようなアドホックなクエリに匿名の型を使うことができると思っていました。

ありがとうございました。

+1

「役に立つ」回答がなくてもこの質問を見るのは恥ずかしいです。 – Jon

答えて

0

一般的に言えば、戻り値の型が「オブジェクト」の場合にのみ、メソッドから匿名型を返すことができます。それで、リフレクションを使用しない限り、匿名型が持つ可能性のあるプロパティは呼び出し元のコードには分かりません。

匿名の型を使用できますが、あまり有益ではないので、そうしたくないかもしれません。

+0

jsonと同じオブジェクトを返す場合に便利です – om471987

関連する問題