2010-05-18 18 views
5

Gần đây, một người nào đó đã tuyên bố rằng họ nghĩ rằng tất cả các quảng cáo phải là CreateOrUpdates. Theo bản năng tôi nghĩ xấu, nhưng bây giờ tôi đang cố gắng tìm hiểu xem tôi có căn cứ nào không.Các đối số chống lại việc tạo hoặc cập nhật

Tình hình

interface IService{ 
    void Create(Object a); 
    void Update(Object a); 
    } 

hoặc

interface IService{ 
     void CreateOrUpdate(Object a); 
    } 

Suy nghĩ đầu tiên của tôi là nếu bạn thực hiện tất cả mọi thứ CreateOrUpdate sau đó bạn không có quyền kiểm soát nếu ai đó vô tình gửi cho bạn dữ liệu sai, hoặc các vấn đề đồng thời nơi có người thay đổi một " trường chính "trước khi bạn gọi cập nhật ....

Nhưng nếu bạn loại bỏ những trường hợp đó, có bất kỳ khuyết điểm nào khác không?

+0

Tự mình nghĩ về điều này rất nhiều lần. Cảm ơn bạn đã đặt câu hỏi này :) – cwap

Trả lời

3

Có vẻ như khá đơn giản đối với tôi: nếu bạn lo ngại về việc tạo bản ghi tình cờ sử dụng hai phương pháp. Nếu bạn không quan tâm đến việc sử dụng nó.

Và nếu bạn không biết bạn có nên quan tâm hay không, bạn không quan tâm. Đi với một phương pháp.

Có thể đó là quá đơn giản, nhưng thường mục đích là chỉ để lấy dữ liệu vào cơ sở dữ liệu.

0

Trong khuôn khổ mà chúng tôi sử dụng, không có Tạo, chỉ TạoOrUpdate. Chúng tôi chưa bao giờ gặp phải trường hợp chúng tôi cần tạo.

Nói cách khác, đó là những gì đã được cung cấp, vì vậy chúng tôi đã đi với nó, và nó đã không thất bại chúng tôi được nêu ra. Hệ thống được hai tuổi với khoảng 300 bảng.

Trong trường hợp của chúng tôi, chúng tôi không thay đổi các khóa chính và nếu khóa chính khớp với hàng hiện tại, điều đó không sai.

1

Tôi từng làm việc trên một ứng dụng báo cáo tài chính, nơi các bản cập nhật bị cấm, tất cả các thay đổi đã tạo ra các bản ghi mới với dữ liệu cập nhật. Điều này nhằm cung cấp lịch sử sửa đổi hoàn chỉnh của tất cả các thay đổi tài khoản.

+0

+1, mặc dù dưới dạng sửa đổi, tôi khuyên bạn nên cập nhật một lần cho phép: đặt trường "thế hệ cuối" trên bản ghi hiện có để cho biết rằng hàng mới đã thay thế nó. – Edmund

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