2012-11-12 10 views
5

私たちの非常に大規模なコードベースがExecuteMethodCallへの呼び出しの数百を持っているExecuteMethodCallとLINQ to SQLのコンパイル済みの使用:ただしはこのパターンに従って、

[Function(Name = "dbo.storedproc")] 
    public ISingleResult<UserData> GetUserData(
     [Parameter(Name = "UserId", DbType = "BigInt")] long? userId) 
    { 
     IExecuteResult result = ExecuteMethodCall(this, ((MethodInfo)(MethodBase.GetCurrentMethod())), userId); 
     return ((ISingleResult<UserData>)(result.ReturnValue)); 
    } 

、これは巨大なパフォーマンスの問題(LINQのへとよく知られた問題を与えることが判明しましたSQL)。だから、私はこのコードの少なくともいくつかをコンパイルされたLinq to SQLに変換することに目を向けている。

私はCompiled Linq To Sqlの例を見つけましたが、ExecuteMethodCallは含まれていませんでした。代わりに、それらはすべてLinqクエリをコンパイルします(from ... where ... select)。

コンパイル済みLinq To SQLに変換された(ExecuteMethodCallを使用して)上記のコードの例を誰かに教えていただければ幸いです。

+0

では、Microsoftのブログにこの記事を見ました[LINQのSQLストアドプロシージャに - ? Guy Bursteinのブログ](http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CDIQFjAA&url=http%3A%2F%2Fblogs.microsoft.co.il%2Fblogs%2Fbursteg %2Farchive%2F2007%2F10%2F05%2Flinq-to-sql-stored-procedures.aspx&jiKgULCXO9KU0QX9q4EQ&usg = AFQjCNEr-IG2GRfwSLPBGPXQvDqQUwASIg&sig2 = EGHEXpCmAfS-V3ok9AZzvg&cad = rja)便利だと思います –

+0

ちょうどその記事を読んでください。ただし、ExecuteMethodCallをSQLクエリにコンパイルされたlinqで使用する方法は示されていません。 – user1147862

+0

パフォーマンスの問題はどこにありますか? 'GetCurrentMethod()'はあなたの速度を落としているのでしょうか、それとも他の何かを完全に減速していますか? –

答えて

0

は、ユーザーID =のuserId(メソッドの引数)、

SPユーザーから*を選択します。exec GetUserData @userId = userIdを

関連する問題