我有这段代码:
Message message = new Message();
message.Id = 5;
message.EntityKey = context.CreateEntityKey("MessageSet", entity);
message.Votes++;
context.Attach(entity);
context.ObjectStateManager.GetObjectStateEntry(entity.EntityKey).SetModifiedProperty("Votes");
Save();
但当然,投票用0初始化。
如何生成类似
的内容Update Messages set Votes=Votes+1 where Id = 5
?? THX
答案 0 :(得分:1)
由于LINQ to Entities是OR映射器,一般的想法是您首先查询需要更新的实体,使用代码中的对象更新它们,并在ObjectContext上发出Update命令以保留更改对那些实体。这是一个关键的事情,但通常很难早期掌握,但使用ORM如Entity Framework,NHibernate,LINQ to SQL等的原因是消除了编写SQL的需要,而是使用对象。
以下内容应该是您所需要的:
Message msg = context.Messages.First(m => m.Id == 5);
msg.Votes += 1;
context.SaveChanges();
对SaveChanges的调用将为您生成SQL CUD语句,每个更新,插入和/或删除一个语句。
答案 1 :(得分:0)
我认为你不能直接实现这一点,但是,你可以使用一些导入功能并使用SP来做你需要的。