2011-12-07 48 views
5

Trong dự án hiện tại của tôi, chúng tôi đang sử dụng Khuôn khổ thực thể và trong ngữ cảnh này để lưu trữ dữ liệu đến từ một hệ thống từ xa. Khi tôi cố gắng lưu các đối tượng, tôi cần phải nói một cách đáng tin cậy nếu một ngoại lệ là cái gì đó có thể được phục hồi từ hay không.Khuôn khổ thực thể - cách phát hiện ngoại lệ có thể khôi phục và không thể khôi phục

Để làm rõ, bằng "được khôi phục từ" tôi có nghĩa là chỉ cần thực hiện lại thao tác một chút sau đó sẽ an toàn và có khả năng thành công. Điều này sẽ bao gồm các vấn đề với kết nối mạng, máy chủ DB đang được khởi động lại hoặc các tình huống tương tự.

Không thể khôi phục trong ngữ cảnh này về cơ bản sẽ là bất cứ điều gì khác, bao gồm ràng buộc toàn vẹn và lỗi khuôn khổ thực thể nội bộ (cơ sở dữ liệu không đồng bộ với mô hình EF). Có thể lập luận rằng một số ràng buộc về tính toàn vẹn có thể được phục hồi nếu ai đó "sửa" dữ liệu, nhưng trong trường hợp này sẽ chỉ có một người viết duy nhất.

Có cách nào đáng tin cậy để phân loại một ngoại lệ đến từ Khuôn khổ thực thể thành một trong hai danh mục này không?

Trả lời

2

Tôi nghĩ rằng bạn sẽ phải đưa ra danh sách của riêng bạn của ngoại lệ rằng bạn sẵn sàng để kiểm tra và xử lý. Danh sách các ngoại lệ mà bạn có thể phân loại là có thể phục hồi hoặc không có khả năng không giống nhau trong bất kỳ hai môi trường nào. Điều đó nói rằng, có lẽ bạn có thể bắt đầu ở đây:

Where to find ADO.NET Entity Framework error list?

+0

Ngay cả việc tìm kiếm danh sách các ngoại lệ và tìm ra khi nào chúng có thể bị ném là một nhiệm vụ không tầm thường. Tôi đang làm điều đó, nhưng tôi chỉ hy vọng một người khác sẽ có trước đây ... – SoftMemes

0

Kiểm tra các bài viết sau đây -

http://msdn.microsoft.com/en-us/library/bb738618.aspx

http://msdn.microsoft.com/en-us/library/bb336792.aspx

http://msdn.microsoft.com/en-us/library/system.data.optimisticconcurrencyexception.aspx

http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2008/07/02/10564.aspx

Tôi chắc chắn hơn so với OptimisticConcurrencyException được huy động từ .SaveChanges() - sử dụng a

try { 
} catch(ExceptionType1) { 
} catch(ExceptionType2) { 
} catch(ExceptionType3) { 
} 

tuyên bố để bắt ngoại lệ khác nhau ...

+0

Tôi xin lỗi, nhưng 4 liên kết đến các biến thể trên OptimisticConcurrencyException không phải là sự giúp đỡ nhiều. Đó là danh sách các "ngoại lệ khác" mà tôi cần và tất cả các điều kiện khi chúng có thể được ném ra. – SoftMemes

+0

Vâng, rõ ràng là không có nhiều thông tin về điều này - vì vậy hãy thiết lập một thử bắt và bắt chước các loại ngoại lệ khác nhau có thể xảy ra - tắt cơ sở dữ liệu của bạn, đặt một số loại phôi bị hỏng trong một thủ tục được lưu trữ .... – Spikeh

+0

? Các tài liệu MSDN có một phần cho các trường hợp ngoại lệ một phương pháp có thể ném, tiếc là nó hiếm khi dân cư thích hợp. – SoftMemes

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