zoukankan      html  css  js  c++  java
  • 一个用于 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;

    }

    表结构:

  • 相关阅读:
    shell-条件测试
    51Nod 1279 扔盘子 (思维+模拟)
    51Nod 1042 数字0-9的数量(数位DP)
    Codeforces 1138B Circus (构造方程+暴力)
    51nod 1133 不重叠的线段 (贪心,序列上的区间问题)
    51nod 1091 线段的重叠(贪心)
    EOJ Monthly 2019.2 E 中位数 (二分+中位数+dag上dp)
    牛客练习赛39 C 流星雨 (概率dp)
    牛客练习赛39 B 选点(dfs序+LIS)
    Educational Codeforces Round 57
  • 原文地址:https://www.cnblogs.com/Qbit/p/2501053.html
Copyright © 2011-2022 走看看