Linq to Entities - 使用主键增加列

时间:2009-06-18 16:12:44

标签: c# linq linq-to-entities

我有这段代码:

    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

2 个答案:

答案 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来做你需要的。