Tôi đã có một ứng dụng trong đó bao gồm 2 phần tại thời điểmLàm thế nào để ... hiển thị dữ liệu từ cơ sở dữ liệu
- Một Viewer tiếp nhận dữ liệu từ một cơ sở dữ liệu sử dụng EF
- Một dịch vụ mà thao tác dữ liệu từ cơ sở dữ liệu khi chạy.
Logic đằng sau hậu trường bao gồm một số dự án như kho - truy cập dữ liệu được thực hiện với đơn vị công việc. Bản thân Viewer chính là một WPF-Form với ViewModel cơ bản.
ViewModel chứa ObservableCollection là nguồn dữ liệu của Trình xem của tôi.
Bây giờ câu hỏi đặt ra là - Làm cách nào tôi có thể truy xuất dữ liệu-cơ sở dữ liệu sau mỗi vài phút? Tôi biết hai vấn đề sau đây:
Đây không phải là dữ liệu mới nhất mà Kho lưu trữ của tôi đang tải - công cụ "thông minh" và truy xuất dữ liệu từ bộ nhớ cache cục bộ? Nếu vậy, làm thế nào tôi có thể buộc EF tải dữ liệu từ cơ sở dữ liệu?Đặt lại toàn bộ ObservableCollection hoặc thêm/xóa đối tượng khỏi chủ đề/nền tảng khác (có tính năng phát hiện) là không thể. Làm thế nào tôi phải giải quyết điều này?
Tôi sẽ thêm một số mã của mình nếu cần nhưng tại thời điểm này tôi không nghĩ rằng điều này sẽ giúp ích chút nào.
Edit:
public IEnumerable<Request> GetAllUnResolvedRequests() {
return AccessContext.Requests.Where(o => !o.IsResolved);
}
Đoạn mã này sẽ không nhận được dữ liệu mới nhất - tôi chỉnh sửa một số hàng bằng tay (bộ IsResolved true) nhưng phương pháp này lấy nó vẫn.
Edit2:
Edit3:
var requests = AccessContext.Requests.Where(o => o.Date >= fromDate && o.Date <= toDate).ToList();
foreach (var request in requests) {
AccessContext.Entry(request).Reload();
}
return requests;
Câu hỏi cuối cùng: Mã ở trên "giải quyết" vấn đề - nhưng theo ý kiến của tôi nó không sạch sẽ. Có cách nào khác không?
EF sẽ tải dữ liệu từ cơ sở dữ liệu chứ không phải bộ nhớ cache. Có vẻ như bạn cần một số loại kiến trúc không đồng bộ pub/sub. –
Cảm ơn câu trả lời của bạn nhưng nếu điểm ngắt ngay sau khi trả về được nhấn tất cả Yêu cầu (bất kể nếu tôi thay đổi nó trong db theo cách thủ công (trước khi trở về)) chứa thuộc tính IsResolved with the value false => Sửa đổi dữ liệu trong thời gian chạy wont result trong dữ liệu cập nhật – C4p741nZ