1

以下をラムダ式に変換したいと思います:

Update [ActivityTask] Set GroupID = "1" Where ActivityID = aid AND TaskID = tid ;

GroupID = (ハードコードされていない、他の場所から取得された int、例として 1 として入力)

これを続行する方法に本当に行き詰まりました...挿入方法を取得しました:

public void Insert(ModelSQL.ActivityTask act)
{
    context.ActivityTasks.AddObject(act);
}

トップと同じように機能するかどうか疑問に思ったので、これを試しました:

    public void Update(int gid , int aid , int tid)
    {
        Update<ActivityTask>( new { x => x.GroupID == gid }).Where(x => x.activityID == aid && x.taskID == tid);
    }

しかし、「ラムダ式を匿名に割り当てることはできません」というエラーが発生し、3つの引数(3つのint)も使用できません..

4

2 に答える 2

0

ここ http://weblogs.asp.net/pwelter34/archive/2011/11/29/entity-framework-batch-update-and-future-queries.aspxを参照してください。それがあなたを助けることを願っています!

于 2013-09-30T07:36:03.087 に答える
0

context.ActivityTasks が List の場合

public void Update(int gid , int aid , int tid)
{
    List<ActivityTask> found = context.ActivityTasks.FindAll(item => item.activityID == aid && item.taskID == tid);
    found.ForEach(item  => { item.GroupID = gid; });
}

Entity Frameworkの複数の更新については、Entity Framework Extensions (複数のエンティティの更新) を参照してください。これはオープン ソースです。これにより、ラムダ式を使用した更新操作が可能になります。

using System.EntityFramework.Extensions.ObjectQueryExtensions; //Include this package
{
  ....

   public void Update(int gid , int aid , int tid)
   {
     context.ActivityTasks.Update(t => new ActivityTask() { GroupID = gid }, 
                                  t => t.activityID == aid && t.taskID == tid);     
   }
  ....
}
于 2013-09-30T07:37:35.963 に答える