0

我得到了用于用户创建的代码。

    public static void CreateUser(User user)
    {

            Save<User>(u => u.AddObject(user));

     }

    Save<T>(Action<ObjectSet<T>> func)
       where T : class
    {

        ...

        func(entitySet);

        entitiesContext.SaveChanges();
    }

现在我正在尝试编写一个更新方法,但它无法编译 u = user

public static void UpdateUser(User user)
{
        Save<User>(u => u = user);
}       

如何更新对象?

4

2 回答 2

1

如果实体与上下文分离,您可以按如下方式对其进行更新。

public static void UpdateUser(User user)
{
      Save<User>(u => { 
         u.Attach(user); 
         u.Context.ObjectStateManager
              .ChangeObjectState(user, System.Data.EntityState.Modified);
         });
} 
于 2012-09-03T00:36:29.743 回答
0

如果你想用 linq 来做,那么你可以实现应该有 ref 参数的自定义泛型委托。例如。

public delegate void MyDelegate<T>(ref T x);

 public static void CreateUser(User user)
 {
        Save<User>((ref User u) => u = user));
 }

Save<T>(MyDelegate<ObjectSet<T>> func)
   where T : class
{

    ...

    func(entitySet);

    entitiesContext.SaveChanges();
}
于 2012-09-02T23:41:47.210 回答