2010-10-29 24 views
6

tôi cần biết thực hành tốt nhất để tránh thời gian chờ kết nối khi sử dụng LINQ to SQL trong các ứng dụng .net đặc biệt khi trả về IQueryable<T> từ tầng hoặc lớp truy cập dữ liệu.thực hành tốt nhất để tránh thời gian chờ kết nối khi sử dụng LINQ to SQL

Tôi nhận được "Thời gian chờ đã hết hạn. Thời gian chờ đã trôi qua trước khi nhận kết nối từ hồ bơi. Điều này có thể xảy ra vì tất cả các kết nối được gộp lại đã được sử dụng và đạt đến kích thước bể bơi tối đa." lỗi khi thử nghiệm ứng dụng asp.net của tôi cho các bài kiểm tra webstress ?

Trả lời

7

http://www.geekscrapbook.com/2010/08/13/connection-timeout-using-linq-datacontext/

Liên kết sẽ giải thích cho bạn những gì sẽ là lý do của Timeouut sử dụng LINQ to SQl.You bằng tay có thể tăng thực hiện truy vấn time.By mặc định 30 giây của nó. Theo Visual Studio 2008 Đến

Tools-> Cơ sở dữ liệu Tools-> Query & xem thiết kế

Ở đây bạn sẽ có tùy chọn để tăng thời gian thực hiện. Hy vọng nó sẽ giúp bạn.

Good Luck

+1

Cảm ơn Prateek, Trên thực tế vấn đề là nếu bạn trả IQueryable từ lớp truy cập dữ liệu của bạn (DAL), bạn không thể sử dụng bằng tuyên bố cho bối cảnh dữ liệu – DSharper

4

Bạn cần phải tăng giá trị CommandTimeout tài sản trong đối tượng DataContext của bạn (giá trị mặc định là 30 giây), nó được đo bằng giây, ví dụ:

var myDataContext = new MyDbDataContext (myConnectionString) { CommandTimeout = 120 }; var rows = myDataContext.sp_Agent__Select (agentId);

+2

Điều này dường như là giải pháp tốt hơn vì bạn không nhất thiết phải dành thời gian cho mọi dự án được tạo –

1

Thực ra, bạn có thể muốn kiểm tra xem máy chủ có thực sự hoạt động không. Tôi chạy vào vấn đề này - hóa ra tôi quên khởi động lại dịch vụ MSSQL sau khi dừng nó để bảo trì.

Basic Noob sai lầm, nhưng gây cho tôi một tuần đau đầu

Các vấn đề liên quan