代码之家  ›  专栏  ›  技术社区  ›  Felipe Pessoto

LINQ to Entities-使用主键递增列

  •  0
  • Felipe Pessoto  · 技术社区  · 17 年前

    我有这个代码:

        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
    

    ?? 谢谢

    2 回复  |  直到 17 年前
        1
  •  0
  •   Paulo Santos    17 年前

    我不认为你能直接做到这一点,但是,你可以使用一些 导入函数 使用一个SP来做你需要的事情。

        2
  •  1
  •   jrista    17 年前

    由于LINQtoEntities是一个或映射器,一般的想法是首先查询需要更新的一个或多个实体,用代码中的对象更新它们,然后在ObjectContext上发出一个更新命令,以保持对这些实体的更改。这是一个关键的事情,但往往很难把握早期,但使用ORM的原因,如实体框架、nhibernate、linq to sql等,是为了消除编写SQL的需要,而改用对象。

    以下是您需要的:

    Message msg = context.Messages.First(m => m.Id == 5);
    msg.Votes += 1;
    
    context.SaveChanges();
    

    对savechanges的调用将为您生成SQL CUD语句,每个更新、插入和/或删除一个语句。