如何在不必首先在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/LINQ选择所有与2列组
- 5. SQL 2008选择前1000并更新所选数据库下拉
- 6. Oracle在更新之前选择
- 7. Linq-to-Sql选择视图,更新表
- 8. Linq to SQL更新数据
- 9. SQL数据库中,选择使用LINQ
- 10. 如何避免在更新之前选择弹簧数据jpa
- 11. UISegmentedControl选择不动画之前更新
- 12. Oracle SQL:根据先前行中的值进行选择列
- 13. 在SQL Server 2008 R2更新之前的有序数据
- 14. LINQ到SQL没有得到更新DB数据
- 15. LINQ的声明中没有再现来自SQL数据选择Management Studio中
- 16. 如何更新选择的选项,但保持先前选择的选项?
- 17. 是选择之前更新一个好方法,反之亦然?
- 18. 在选择之前预先加载表格查看数据
- 19. 急SQL:选择数据之前或日期时间之后
- 20. SQL查询选择一个更新,记录,即没有更新
- 21. LINQ to XML选择/更新
- 22. LINQ to SQL没有更新子元素
- 23. NHibernate - 刷新之前/之后选择?
- 24. PHP中的数据没有在SQL数据库中更新
- 25. C#Linq-to-SQL在Ado.net之后没有更新插入
- 26. 在SQL Server数据库中没有更新数据集更改
- 27. 选择SQL表中最新的数据?
- 28. 没有选择/插入SQL函数/删除/更新
- 29. 根据之前选择的值刷新一个选择列表
- 30. SQL选择更新
是的。我的目的是用户可以重新排列元素的排序顺序;我可以返回所有的表单数据并更新排序顺序,但是他们所有的表单数据也会被更新,即使他们只是想更新排序。我真的很想更新订单栏,但听到你的意思concurr。 – GONeale 2008-12-30 03:45:00