一个用于 Entity Framework 对象拷贝的方法

此方法用于两个不同类型Entity Framework 对象相同名称属性之间的拷贝

public class EntityHelper

{

/// <summary>

///","号分隔忽略属性

/// </summary>

/// <param name="source">源对象</param>

/// <param name="target">目标对象</param>

/// <param name="ignorePoperties"></param>

/// <returns></returns>

public static TTarget EntityCopy<TSource, TTarget>(TSource source, TTarget target, string ignorePoperties)

{

 

List<string> ignoreP = new List<string>();

if (!string.IsNullOrEmpty(ignorePoperties))

{

ignoreP = ignorePoperties.ToLower().Split(',').ToList();

}

 

ignoreP.Add("entitykey");

ignoreP.Add("entitystate");

var tFields = target.GetType().GetProperties();

var sFields = source.GetType().GetProperties();

 

foreach (var item in tFields)

{

if (!ignoreP.Contains(item.Name.ToLower()))

{

foreach (var si in sFields)

{

if (si.Name == item.Name)

{

object svalue = si.GetValue(source, null);

object tvalue = item.GetValue(target, null);

if (svalue != null && !svalue.Equals(tvalue))

{

item.SetValue(target, svalue, null);

}

}

}

}

}

return target;

 

}

 

/// <summary>

///","号分隔忽略属性

/// </summary>

/// <param name="source">源对象</param>

/// <param name="target">目标对象</param>

/// <returns></returns>

public static TTarget EntityCopy<TSource, TTarget>(TSource source, TTarget target)

{

return EntityCopy(source, target, "");

 

}

 

 

调用:

/// <summary>

///新上下级关系

/// </summary>

public int GetChagedPositionRelations()

{

var query = from pr in EISEEntities.View_Interface_PositionReport

join p in EISEEntities.View_Interface_Position on pr.PositionId equals p.PositionId

join dic in EISEEntities.View_Interface_Dictionary on p.DivisionID equals dic.DictionaryId

where DivtionFilt.IndexOf(dic.Code) != -1

&& pr.LastModifiedOn > StartTime

&& pr.LastModifiedOn < EndTime

select new { pr, p.PositionCode };

var list = query.ToList();

 

foreach (var item in list)

{

ocm_map_PositionRelation_Approval model = new ocm_map_PositionRelation_Approval();

 

//

EntityHelper.EntityCopy(item.pr, model);

model.HRPositionCode = item.PositionCode;

if (item.pr.ParentPositionId != null)

{

model.ParentPositionCode = (from pp in EISEEntities.View_Interface_Position

where pp.PositionId == item.pr.ParentPositionId

select pp.PositionCode).FirstOrDefault();

 

}

model.PositionRelationApprovalId = Guid.NewGuid();

model.ApprovalStatus = (int)EISSyncApprovalStatus.Stored;

SDMEntities.ocm_map_PositionRelation_Approval.AddObject(model);

}

SDMEntities.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);

return list.Count;

}

 

表结构:

转载于:https://www.cnblogs.com/Qbit/archive/2012/05/15/2501053.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值