我得到了这个用于用户创建的代码。
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);
}
如何更新对象?
答案 0 :(得分:1)
如果实体与上下文分离,您可以按如下方式更新它。
public static void UpdateUser(User user)
{
Save<User>(u => {
u.Attach(user);
u.Context.ObjectStateManager
.ChangeObjectState(user, System.Data.EntityState.Modified);
});
}
答案 1 :(得分:0)
如果你想用linq做,那么你可以实现应该有ref params的自定义通用委托。例如。
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();
}