更新时比如tbUser 有 ID,UserName,UserPwd,UserAccount等等一共三十个字段 但我只改一个UserAccount,那更新的时候只能 先根据ID搜索一条tbuser,然后给它一赋值UserAccount属性吗?
或者一共三十个属性 ,现在需求改了, 需要修改20个,也只能这样吗? 有没智能点的开源的开源的用?
用反射
internal static void Update<T>(T source, ref T New, params string[] ignores) { Type info = typeof(T); PropertyInfo[] propertys = info.GetProperties(); foreach (PropertyInfo pi in propertys) { if (ignores.Contains(pi.Name)) continue; info.GetProperty(pi.Name).SetValue(New, pi.GetValue(source, null), null); } }
这样应该可以吧
一般的方法是 会有一个update的方法 那个方法根据id , update entity的每个属性 类似于 update tbUser set UserName='UserName' ,UserPwd='UserPwd' ,UserAccount='UserAccount' where id=@id
然后在P层有个方法是更具id获取entity ,如果改了UserAccount 只要 entity.UserAccount="newaccount";update(entity);这样就可以了。
如果还不理解 可以去下个代码生成器 看看生成好的代码就可以了。
自己封装个类不就好了。 根据提 字段数量 自动生成 相应的UPDATE 语句
我也刚接触ef,mark