用linq更新数据,怎么才能只按指定的条件,如:id来更新?

WelllFrog 2014-09-16 05:29:24
查询资料发现linq更新数据时where会带上所有数据库字段

怎么才能只按指定的条件,如按id来更新?
...全文
479 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2014-09-18
  • 打赏
  • 举报
回复
应该和你的冲突设置有关。where带上所有字段是防止别的程序在并发的时候也修改记录。 http://www.cnblogs.com/happyhippy/archive/2010/01/30/1660150.html http://msdn.microsoft.com/zh-cn/library/vstudio/bb399389(v=vs.100).aspx
WelllFrog 2014-09-18
  • 打赏
  • 举报
回复
引用 10 楼 caozhy 的回复:
应该和你的冲突设置有关。where带上所有字段是防止别的程序在并发的时候也修改记录。 http://www.cnblogs.com/happyhippy/archive/2010/01/30/1660150.html http://msdn.microsoft.com/zh-cn/library/vstudio/bb399389(v=vs.100).aspx
多谢!
romanchaos 2014-09-17
  • 打赏
  • 举报
回复
例如UPDATE USER SET Name = 'AAA' WHERE Id = 1其实是SqlServer的语法糖,本质上还是UPDATE USER SET Name = 'AAA' ,Age = 18……WHERE Id = 1所以不存在什么效率问题;至于你更新的数据在提交前被另一个人更新了那是设计范畴,记得Linq2Sql有三种SaveChange方法,至于EF由于接触不长所以坐等讲解。
WelllFrog 2014-09-17
  • 打赏
  • 举报
回复
引用 6 楼 caozhy 的回复:
你没有设置主键?
设置了主键,没有用
            DataClassesDataContext db = new DataClassesDataContext();

            System.IO.StreamWriter sw = new System.IO.StreamWriter("C:\\log.txt", true);
            db.Log = sw;

            var serviceNotice = db.ServiceNotice.Single(x => x.Id == sn.Id);
            serviceNotice.FlagSend = true;
            db.SubmitChanges();

            sw.Flush();
            sw.Close();
log内容是
SELECT [t0].[Id], [t0].[Type], [t0].[Targets], [t0].[FileIds], [t0].[Subject], [t0].[Content], [t0].[SendStartTime], [t0].[SendEndTime], [t0].[TimeMode], [t0].[CreateTime], [t0].[CreateUser], [t0].[EditTime], [t0].[EditUser], [t0].[SendTimes], [t0].[FlagSend]
FROM [dbo].[ServiceNotice] AS [t0]
WHERE [t0].[Id] = @p0
-- @p0: Input Int (Size = -1; Prec = 0; Scale = 0) [6]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 4.0.30319.17929

UPDATE [dbo].[ServiceNotice]
SET [FlagSend] = @p12
WHERE ([Id] = @p0) AND ([Type] = @p1) AND ([FileIds] = @p2) AND ([Subject] = @p3) AND ([Content] = @p4) AND ([SendStartTime] = @p5) AND ([SendEndTime] IS NULL) AND ([TimeMode] = @p6) AND ([CreateTime] = @p7) AND ([CreateUser] = @p8) AND ([EditTime] = @p9) AND ([EditUser] = @p10) AND ([SendTimes] = @p11) AND (NOT ([FlagSend] = 1))
-- @p0: Input Int (Size = -1; Prec = 0; Scale = 0) [6]
-- @p1: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [邮件]
-- @p2: Input VarChar (Size = 8000; Prec = 0; Scale = 0) []
-- @p3: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [测试465]
-- @p4: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [<p>333</p>]
-- @p5: Input DateTime (Size = -1; Prec = 0; Scale = 0) [2014/9/17 11:00:00]
-- @p6: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [不重复]
-- @p7: Input DateTime (Size = -1; Prec = 0; Scale = 0) [2014/9/10 14:38:49]
-- @p8: Input VarChar (Size = 8000; Prec = 0; Scale = 0) [pygong]
-- @p9: Input DateTime (Size = -1; Prec = 0; Scale = 0) [2014/9/17 10:33:51]
-- @p10: Input VarChar (Size = 8000; Prec = 0; Scale = 0) [pygong]
-- @p11: Input Int (Size = -1; Prec = 0; Scale = 0) [0]
-- @p12: Input Bit (Size = -1; Prec = 0; Scale = 0) [True]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 4.0.30319.17929
很明显,他的更新方式里where带上了所有字段,怎么写才会只按id更新
敌敌畏耶 2014-09-17
  • 打赏
  • 举报
回复
有影响么?
风步心 2014-09-17
  • 打赏
  • 举报
回复
var message=表.FirstOrDefault(p => p.id== id); message.值=1 db.SubmitChanges();
threenewbee 2014-09-17
  • 打赏
  • 举报
回复
你没有设置主键?
WelllFrog 2014-09-16
  • 打赏
  • 举报
回复
引用 3 楼 kongwei521 的回复:
参考 更新
NorthwindDataContext ctx = new NorthwindDataContext();
  Customer alfki = ctx.Customers.Single(c => c.CustomerID == "ALFKI");
  alfki.CompanyName = "New Company Name";
  ctx.SubmitChanges();
看这个链接,我说的是这个问题 http://dev.yesky.com/msdn/319/3499319.shtml
蝶恋花雨 2014-09-16
  • 打赏
  • 举报
回复
参考 更新
NorthwindDataContext ctx = new NorthwindDataContext();
  Customer alfki = ctx.Customers.Single(c => c.CustomerID == "ALFKI");
  alfki.CompanyName = "New Company Name";
  ctx.SubmitChanges();
WelllFrog 2014-09-16
  • 打赏
  • 举报
回复
引用 1 楼 l810591802 的回复:
list.select(r=>r.ID)?
不是查询,是更新,但是linq常规的更新where会带上所有的字段
l810591802 2014-09-16
  • 打赏
  • 举报
回复
list.select(r=>r.ID)?

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧