2013-09-27 206 views
6

Tôi có một ứng dụng N-Tier nơi POCO được điền bởi Entity Framework ở phía máy chủ và được chuyển giao cho các ứng dụng khách của tôi. Các máy khách thực hiện các thay đổi đối với các POCO hoặc thêm các POCO mới và sau đó gửi chúng trở lại máy chủ được lưu trữ trong cơ sở dữ liệu.Entity Framework POCO Thay đổi Chiến lược Theo dõi

Nếu tôi đang sử dụng POCO thuần túy, tức là không có proxy, không phải là thực thể tự theo dõi, một số phương pháp phổ biến mà mọi người đang thực hiện để giải quyết vấn đề Theo dõi thay đổi là gì? Nếu dịch vụ của bạn nhận được một bộ sưu tập các POCO, làm thế nào để biết cách thực hiện Thêm, Cập nhật hoặc Xóa bằng cách sử dụng Khuôn khổ thực thể?

Trả lời

6

Khuôn khổ thực thể không có hỗ trợ tích hợp sẵn cho các trường hợp bị ngắt kết nối đó. Tôi biết trong ba tùy chọn chung:

  • Sử dụng GraphDiff, một mã nguồn mở add-on thư viện

    Ưu

    • Không cần phải viết mã theo dõi sự thay đổi về phía khách hàng
    • Mẫu chung để cập nhật biểu đồ đối tượng bị ngắt trong cơ sở dữ liệu
    • Không có nhiều đồng de viết trên phía máy chủ


    Nhược

    • Cơ sở dữ liệu phải được truy vấn và các tổ chức phải được nạp để phát hiện nếu một đối tượng đã được bổ sung, cập nhật hoặc xóa
    • phụ thuộc trên thư viện của bên thứ ba ngoài thư viện lõi EF


  • đồ thị Cập nhật đối tượng bằng tay trên phía máy chủ (Example)

    Ưu

    • Không cần phải viết mã theo dõi sự thay đổi về phía khách hàng
    • Không phụ thuộc vào một thư viện của bên thứ ba ngoài các thư viện lõi EF


    Nhược

    • Cơ sở dữ liệu phải được truy vấn và các tổ chức phải được nạp để phát hiện nếu một đối tượng đã được bổ sung, cập nhật hoặc xóa
    • Không mô hình phổ biến, ví dụ:hầu hết các kịch bản cập nhật yêu cầu mã cá nhân
    • Rất nhiều mã để viết về phía máy chủ


  • Thêm thuộc tính cho tiểu bang tổ chức để đối tượng của bạn và theo dõi những thay đổi bằng tay về phía khách hàng bằng cách thiết lập các tiểu bang cho phù hợp (tôi không có một ví dụ cho phương pháp này; tôi tin rằng, Julie Lerman đang sử dụng và giới thiệu nó)

    Ưu

    • Cơ sở dữ liệu không nhất thiết phải được truy vấn để phát hiện nếu một đối tượng đã được bổ sung, cập nhật hoặc xóa
    • Không phụ thuộc vào một thư viện của bên thứ ba, thêm vào các thư viện lõi EF
    • (Có lẽ?) mô hình phổ biến trên phía máy chủ để chuyển trạng thái được theo dõi vào trạng thái thực thể của mục được đính kèm


    Disadvan tages

    • đang thay đổi theo dõi để viết về phía khách hàng
    • Không mô hình phổ biến về phía khách hàng, ví dụ: hầu hết các kịch bản biến đổi theo dõi (và công nghệ loại khách hàng/UI) yêu cầu mã cá nhân