理想情况下,我想有:ServiceStack LINQ的合并域和部分更新
public user Update(User dto) {
var user = userRepository.GetUserById(dto.Id);
var mergedFields = Merge(user, dto); //my dream function
userRepository.UpdateOnly(user, mergedFields)
.Where(u => u.Id == user.Id); //OrmLite UpdateOnly func
return user;
}
哪里Merge
是我的DEAM函数返回一个LINQ表达式:
Expression<Func<T, TKey>> Merge(T target, T source)
所以,Merge
知道什么是从T源更新到T目标。更新目标中这些属性的值,并将这些更新的属性作为Linq Expression返回以供OrmLite UpdateOnly使用。
但是,我拉我的头发,我无法弄清楚如何写这个Merge
函数。请给我一些帮助!
谢谢!
编号:ServiceStack OrmLite是light weight ORM。这是UpdateOnly
功能需要一个LINQ表达式是这样的:
.UpdateOnly(new User {FirstName="admin", LastName="my", OtherStuff="etc..."},
u => {u.FirstName, u.LastName}).Where(u => u.Id == 123);
这是一个非常详细的答案!谢谢,我尝试了解决方案,并告诉你它是如何工作的。 – Tom
@Tom谢谢。希望你得到它的工作。 – Scott