Tôi cố gắng loại bỏ một số thay đổi với chức năng tải lại. Tôi nhận được InvalidOperationException
. Làm cách nào để ngăn chặn điều này?Khuôn khổ thực thể 5 InvalidOperationException trên Tải lại
DbContext.SaveChanges();
//Entity is in Unchanged state
//Make some changes to an entity
//Change state to modified
DbContext.Entry(entity).Reload();
InvalidOperationException
EntityMemberChanged hoặc EntityComplexMemberChanged được gọi mà không đầu tiên gọi EntityMemberChanging hoặc EntityComplexMemberChanging trên theo dõi sự thay đổi tương tự với tên thuộc tính tương tự. Để biết thông tin về việc thay đổi báo cáo đúng cách, hãy xem tài liệu Entity Framework .
EDIT:
Tôi đã kích hoạt và tàn tật ProxyCreationEnabled
, LazyLoadingEnabled
.
Đã thử các cách tiếp cận khác nhau. Tất cả những nỗ lực này ném cùng một ngoại lệ.
var objContext = ((IObjectContextAdapter)context).ObjectContext;
objContext.Refresh(RefreshMode.ClientWins, entry.Entity);
entry.OriginalValues.SetValues(entry.GetDatabaseValues());
Hope tôi nhận được một giải pháp. Không muốn vứt bỏ toàn bộ DbContext để tải lại tất cả dữ liệu.
Có bất kỳ trợ giúp nào trong số những trợ giúp này không? http://stackoverflow.com/questions/5221314/refresh-entity-instance-with-dbcontext hoặc http://stackoverflow.com/questions/5799737/entity-framework-4-1-dbset-reload hoặc http này: //connect.microsoft.com/VisualStudio/feedback/details/694567/entitymemberchanged-or-entitycomplexmemberchanged-was-called-without-first-calling-entitymemberchanging-or-entitycomplexmemberchanging-on-the-same-change-tracker-with- the-same-property-name ?? – LiverpoolsNumber9
Điều này có thể không liên quan gì đến tình huống của bạn, nhưng muốn kiểm tra .. Bạn có đang thực hiện bất kỳ loại đa luồng/không đồng bộ nào trong chương trình của mình không? Giống như sử dụng bất kỳ PLINQ hoặc 4.5 async/await? – tostringtheory
@tostringtheory Allready đã kiểm tra nó mà không cần bất kỳ luồng nào. Cùng một vấn đề. –