2012-11-12 31 views
5

của chúng tôi cơ sở mã rất lớn có hàng trăm cuộc gọi đến ExecuteMethodCall, sau mô hình này:Sử dụng Biên soạn LINQ to SQL với ExecuteMethodCall

[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)); 
    } 

Tuy nhiên, điều này hóa ra cho vấn đề hiệu suất rất lớn (vấn đề nổi tiếng với LINQ to SQL). Vì vậy, tôi đang xem xét chuyển đổi ít nhất một số mã này để biên dịch LINQ to SQL.

Tôi đã tìm thấy các ví dụ về Biên dịch Linq thành Sql, nhưng không có ví dụ nào trong số chúng liên quan đến ExecuteMethodCall. Thay vào đó, tất cả chúng đều biên dịch một truy vấn LINQ (từ ... ở đâu ... chọn).

Tôi sẽ biết ơn nếu ai đó có thể cho tôi một ví dụ về mã trên (sử dụng ExecuteMethodCall) được chuyển đổi thành Biên dịch LINQ to SQL.

+0

Bạn có thấy bài đăng này trên blog của microsoft [LINQ to SQL Stored Procedure - Blog của 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% 2F057% 2F10% 2F05% 2Flinq-to-sql-stored-procedures.aspx & ei = jJKgULCXO9KU0QX9q4EQ & usg = AFQjCNEr-IG2GRfwSLPBGPXQvDqQUwASIg & sig2 = EGHEXpCmAfS-V3ok9AZzvg & cad = rja) Tôi nghĩ rằng nó có thể hữu ích –

+0

Chỉ cần đọc bài đăng đó. Tuy nhiên, nó không cho thấy làm thế nào để sử dụng ExecuteMethodCall với một LINQ biên dịch để truy vấn sql. – user1147862

+0

Trường hợp chính xác là vấn đề hiệu suất? Có phải 'GetCurrentMethod() 'đang làm chậm bạn hoặc một cái gì đó khác hoàn toàn? –

Trả lời

0

select * from sử dụng nơi userid = userId (đối số của phương pháp),

SP: exec GetUserData @userId = userId