Tôi đã làm việc với các dịch vụ RIA, nơi ObjectContext có phương thức RejectChanges(). Tuy nhiên, tôi hiện đang làm việc với EF 4.4 trong một ứng dụng máy tính để bàn và tôi không thể tìm thấy phương pháp đó. Vì vậy, câu hỏi của tôi là: trong một scenrario, nơi tôi cho phép người dùng thực hiện các thao tác Crud batch trên bộ sưu tập, làm thế nào tôi có thể hoàn nguyên tất cả các thay đổi? Tôi có thể đi với tái tạo bối cảnh và lấy dữ liệu một lần nữa, nhưng âm thanh đó rất cần thiết nếu tôi cần phải hoàn nguyên các thay đổi trở lại 1-2 thực thể.DbContext và RejectChanges
Vì vậy, cách tốt nhất để từ chối thay đổi là gì? Và cũng có thể, làm cách nào để chúng ta biết liệu bối cảnh có đang làm điều gì đó (IsBusy)?
Tạo lại ngữ cảnh sẽ là một giải pháp tốt. Tuy nhiên, tôi đã gặp sự cố khi đồng bộ hóa dữ liệu liên quan. Một ví dụ là tôi đã có CRUD trên CollectionA trên ViewA và CRUD trên COllectionB trên ViewB. CollectionB cũng giữ tham chiếu đến CollectionA. Vì vậy, nếu tôi có 2 đối tượng Context, cả cho CollectionA và CollectionB, tôi sẽ đồng bộ hóa ViewB như thế nào, nếu tôi thay đổi CollectionA trên ViewA? Khi có một Context mọi thứ đều đồng bộ, vì chúng ta đang thực sự chỉ làm việc trên một collectionA, không phải là hai. Tái tạo bối cảnh "toàn cầu" sẽ tạo ra một mớ hỗn độn. :) Tôi đã nhầm lẫn bằng cách sử dụng ngữ cảnh "toàn cầu" chưa? – Goran
Đối với các "bận rộn", tôi đã quan tâm những gì sẽ xảy ra nếu tôi phát hành một Load trong async maner, và sau đó tôi cố gắng phát hành một Load, trong khi trước đó đã không kết thúc? Bằng cách này tôi có thể kiểm tra nếu nó là "bận rộn", vì vậy tôi có thể xếp hàng một Load mới. – Goran
+1 để nhận thấy điều mà hầu hết mọi người dường như bỏ lỡ. các mối quan hệ: có thể có các thay đổi được theo dõi sẽ không được chọn đơn giản bằng cách xem qua bộ sưu tập Entries cho State! = Unchanged. (EF v6.) – mwardm