(SOD)懂得进来? ==》 关于拷贝对象

.Net技术 码拜 9年前 (2016-03-11) 1218次浏览
假设一个业务类 一个实体类(sod代码生成器生成的),
发现OQL里面有CopyTo方法 试用了下 发现数据都是空;没有达到效果。  只能是暂时用老土的方法 一个个赋值,大家有没有什么好的方法?

AfficheInfo afficheinfo = new AfficheInfo();
             {
               AfficheId = affiche.AfficheId,
                Content = affiche.Content,
                Title = affiche.Title,
               AddedDate = affiche.AddedDate
             };
//q.CopyTo<AfficheInfo>(afficheinfo);   //这是本人想用的 一句话解决  发现好像没有执行

另外发现 QOL.ToEntity 方法的数据库连接 要是没有专门指定的话 就是默认web.config里面的最后一个配置, 也可以直接用
EntityQuery.QueryObject<T>(OQL, db)
AdoHelper db = MyDB.GetDBHelperByConnectionName(“配置名称”);

解决方案

10

可以用序列化和反序列化2个操作完成一个对象的拷贝。
序列化:

PropertyNameValues pnValues;
            if (allFeilds)
            {
                pnValues = entity.GetNameValues();
            }
            else
            {
                pnValues = entity.GetChangedValues();
            }
            PropertyNameValuesSerializer pnvSerializer = new PropertyNameValuesSerializer(pnValues);
            string tmp = pnvSerializer.Serializer();

反序列化:

(new PropertyNameValuesSerializer(null)).Deserialize<Order>(tmp);

10

假设有 业务类 User和实体类UserEntity,它的属性名称和属性类型都一样,可以如下做:

 User user= userEntity.CopyTo<User>(null);
 //or
 User user2 = new User();
 userEntity.CopyTo<User>(user2);

User,UserEntity互换操作也是可以的。
注意CopyTo是一个扩展方法,需要先引用 PWMIS.Core.Extensions.dll,并且
using PWMIS.Core.Extensions;


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明(SOD)懂得进来? ==》 关于拷贝对象
喜欢 (0)
[1034331897@qq.com]
分享 (0)