如何在不必首先在LINQ中選擇數據的情況下更新記錄?因爲您必須首先執行linq select(顯然調用成本高昂的SQL SELECT),請更改所需屬性,然後執行SubmitChanges()。我希望避免這種情況,只需執行SQL UPDATE,我已經知道該ID。更新之前沒有先選擇LINQ 2 SQL中的數據?
回答
我還沒有嘗試過,但看起來,如果你能做到這一點與附件:
Table(TEntity).Attach Method (TEntity, Boolean)
你設置處於更新狀態的對象並將其傳入,並將布爾參數設置爲true。當然,那麼你必須設置全部這些字段,而不僅僅是你想要改變的字段。
如果您只想更改一個或兩個字段,則可以使用DataContext對象上的ExecuteCommand和ExecuteQuery方法直接調用SQL。您必須將SQL作爲字符串傳入,併爲SQL中的每個參數傳入一個參數。請特別注意SQL字符串必須如何構建:
該命令的語法幾乎 一樣用於創建 一個ADO.NET DataCommand的語法。唯一的 區別在於如何指定參數 。具體而言,您 通過在大括號括起來 指定參數({...})和枚舉它們 從1開始的參數是與所述參數陣列中的同樣編號 對象相關聯 。
您需要使用Attach方法將斷開的實體「附加」到表中。這篇文章在MSDN上概述瞭如何使用它:
除非您將對象設置爲使用樂觀併發性(我認爲所有列都是nocheck),否則這將非常困難。使用任何類型的併發性,您都需要舊值和新值,至少對於檢查的列是必需的。或者,您可以創建並映射SQL函數/存儲過程以進行更新,或者直接使用ExecuteCommand執行SQL,如@Kyralessa所述。我認爲Detach/Attach在配對時效果最好,即獲取對象,分離,使用它,然後在完成後重新附加並保存。
PLINQO實現實體分離,並允許您從一個上下文中分離實體,然後將其重新附加到另一個上下文中。它還能夠直接執行更新和刪除操作,而無需首先檢索實體。欲瞭解更多信息,你可以看看網站http://www.plinqo.com/
Thnx Eric,方便。 – GONeale 2009-05-05 00:30:35
- 1. Linq to SQL更新沒有更新數據,沒有例外c#
- 2. 字典LINQ選擇先前
- 3. CakePHP 2之前驗證沒有數據
- 4. SQL 2008選擇前1000並更新所選數據庫下拉
- 5. Linq-to-Sql選擇視圖,更新表
- 6. Linq to SQL更新數據
- 7. SQL數據庫中,選擇使用LINQ
- 8. 如何避免在更新之前選擇彈簧數據jpa
- 9. Oracle SQL:根據先前行中的值進行選擇列
- 10. 如何更新選擇的選項,但保持先前選擇的選項?
- 11. 急SQL:選擇數據之前或日期時間之後
- 12. LINQ to XML選擇/更新
- 13. NHibernate - 刷新之前/之後選擇?
- 14. 在SQL Server數據庫中沒有更新數據集更改
- 15. SQL選擇更新
- 16. 更新前休眠選擇
- 17. 的LINQ to SQL ::數據更新問題
- 18. 檢查空之前選擇了LINQ
- 19. SQL更新沒有數據庫鎖定
- 20. LINQ to sql動態數據在插入和更新之前修改對象
- 21. 顯示先前選擇的選擇
- 22. LINQ到SQL - 選擇一個新的對象,並進行更新
- 23. datagridview行選擇;沒有更新到新的選擇
- 24. 根據排名和先前選擇的行選擇行
- 25. gridview更新總是首先選擇行?
- 26. 選擇1更新選擇2,但選擇2不會觸發
- 27. jQuery的選擇2刷新數據
- 28. PHP沒有正確更新選擇框
- 29. Laravel:沒有選擇文件更新數據再次
- 30. Linq to SQL,在一次插入前更新大量數據
是的。我的目的是用戶可以重新排列元素的排序順序;我可以返回所有的表單數據並更新排序順序,但是他們所有的表單數據也會被更新,即使他們只是想更新排序。我真的很想更新訂單欄,但聽到你的意思concurr。 – GONeale 2008-12-30 03:45:00