2017-03-06 125 views
3

我有這個過程,當用戶想要使檢查無效時發生。加載,更新和保存,或直接執行Insert/Update sql命令?

每個檢查包含多個PayableCheck記錄,以及多個錯誤記錄

Check.CheckID = PayableCheck.CheckID 
Check.CheckID = Error.CheckID 

每個PayableCheck 1個帳款記錄相匹配。

PayableCheck.PayableID = Payable.PayableID 

每個應付對應與收據或錯誤

Error.PayableID = Payable.PayableID 
Receipt.PayableID = Payable.PayableID 

當用戶空隙的檢查(給定的一個Check ID#),我需要:

  1. 設置檢查狀態至V
  2. 創建另一個支票與原支票的金額的負值進行檢查
  3. 創建另一個錯誤或與原件覈對相關聯的每個錯誤,具有負的量每個錯誤
  4. 設置活動現場爲0每個PayableCheck鏈接到原始檢查
  5. 設置每個鏈接直接付給狀態Ø
  6. 設置每個鏈接錯誤以狀態O,並且每個鏈接的收據狀態Ø

我是最好加載一切都在使用實體框架,使C#中的更改,然後保存,或者是有隻使用SQL更新和插入一個更好的方法?

+1

如果這就是你所要求的,我認爲效率並不一樣。如果你開始使用實體框架,你應該繼續保持一致性。如果在EF中發現它過於複雜,則可以創建存儲過程。這樣,您可以稍後進行更改,而無需重新編譯代碼。只是我的0.02美元。 – justiceorjustus

+0

我正在使用EF。我只是想知道哪種方式更容易編碼和維護。 –

回答

1

鑑於你正在改變的「簡單路線」是將數據載入上下文與EF,進行更改,然後調用保存更改。

這應該會產生非常好的SQL,但是如果您擔心實體的大小或您將要加載的數據量,則效率會很低,那麼更好的方法是直接在SQL中處理它並編寫存儲過程,當然你仍然可以從EF調用它。

2

更好地在sql server中創建一個存儲過程,並寫出所有應該達到此目的的sql。