Nó thực sự phụ thuộc. Để thực hiện, SQL CE hoạt động tốt nhất nếu luôn có kết nối trực tiếp tới cơ sở dữ liệu, vì động cơ không phải xây dựng mọi thứ mỗi khi bạn kết nối.
Có một kết nối duy nhất, tuy nhiên, dẫn đến dữ liệu flushiong lười biếng cho tệp và khả năng mất dữ liệu hoặc tham nhũng cao hơn trong trường hợp xảy ra lỗi thảm khốc.
Tôi có xu hướng mở kết nối "giả" với cơ sở dữ liệu khi khởi động ứng dụng và có kết nối đó luôn mở nhưng hiếm khi hoặc không bao giờ thực sự được sử dụng. Điều này giữ cho động cơ "mồi" nếu bạn muốn. Để truy cập dữ liệu thực tế, tôi sử dụng kết nối riêng và quản lý trạng thái dựa trên hoạt động tôi đang làm, thường để nó mở trên nhiều truy vấn (một giao dịch giả nếu bạn muốn), nhưng không để nó mở vô thời hạn.
Bạn có thể thay đổi hành vi xả nước lười biếng theo hai cách. Khi bạn gọi 'Commit' trên' SqlCeTransaction', bạn có thể 'CommitMode.Immediate' để xóa giao dịch ngay lập tức (http://msdn.microsoft.com/en-US/library/esdw1h9d.aspx). Ngoài ra còn có một tùy chọn 'flush interval' trên chuỗi kết nối (http://msdn.microsoft.com/en-us/library/system.data.sqlserverce.sqlceconnection.connectionstring.aspx). –
Ý của bạn là gì? – pdiddy
Tôi đang tìm kiếm bất kỳ tài liệu công khai nào về điều này, nhưng tất cả những gì tôi có thể tìm thấy là một email riêng tư từ một nhà phát triển trên nhóm SQL CE. Về cơ bản, kết nối đầu tiên với cơ sở dữ liệu khởi tạo một số đối tượng trong nội bộ và mọi kết nối khác đều sử dụng chúng. Tạo và giữ một kết nối xây dựng các đối tượng đó để sử dụng bởi tất cả các kết nối tiếp theo (do đó cải thiện hiệu năng). – ctacke