**/
/// <summary>
/// 同类型数据赋值
/// </summary>
/// <param name="DataSetter">需要设置值的对象</param>
/// <param name="DataGetter">值来源</param>
/// <param name="IsLinqData">是否为linq模式</param>
public
static
void
SameValueCopier(
object
DataSetter,
object
DataGetter,
bool
IsLinqData)

{

PropertyInfo[] propertyInfoList = DataSetter.GetType().GetProperties();
foreach (PropertyInfo propertyInfo in propertyInfoList)

{
if (propertyInfo.MemberType == MemberTypes.Property)

{
string propertyName = propertyInfo.Name;
object value = DataGetter.GetType().GetProperty(propertyName).GetValue(DataGetter, null);
if (IsLinqData)

{
if (!propertyInfo.PropertyType.IsGenericType)

{
DataSetter.GetType().GetProperty(propertyName).SetValue(DataSetter, value, null);
}
}
else

{
DataSetter.GetType().GetProperty(propertyName).SetValue(DataSetter, value, null);
}
}
}
}



/**/
/// <summary>
/// 同类型数据赋值
/// </summary>
/// <param name="DataSetter">需要设置值的对象</param>
/// <param name="DataGetter">值来源</param>
/// <param name="IsLinqData">是否为linq模式</param>
public
static
void
DiffValueCopier(
object
DataSetter,
object
DataGetter,
bool
IsLinqData)

{

PropertyInfo[] propertyInfoSetterList = DataSetter.GetType().GetProperties();
PropertyInfo[] propertyInfoGetterList = DataGetter.GetType().GetProperties();

foreach (PropertyInfo dataSetterPropertyInfo in propertyInfoSetterList)

{
if (dataSetterPropertyInfo.MemberType == MemberTypes.Property)

{
string dataSetterPropertyName = dataSetterPropertyInfo.Name;

foreach (PropertyInfo dataGetterPropertyInfo in propertyInfoGetterList)

{
string dataGetterPropertyName = dataGetterPropertyInfo.Name;
object value = DataGetter.GetType().GetProperty(dataGetterPropertyName).GetValue(DataGetter, null);
if (dataSetterPropertyName == dataGetterPropertyName)

{
if (IsLinqData)

{
if (!dataSetterPropertyInfo.PropertyType.IsGenericType)

{
DataSetter.GetType().GetProperty(dataSetterPropertyName).SetValue(DataSetter, value, null);
break;
}
}
else

{
DataSetter.GetType().GetProperty(dataSetterPropertyName).SetValue(DataSetter, value, null);
break;
}
}
}
}
}
}







































































































Category newc = new Category { ID = "1", P_ID = "0", Name = "b" };
Category oldc = db.Category.Where(r => r.ID == "1").First();
SameValueCopier(oldc, newc);
db.SubmitChanges();
kmdc.SubmitChanges();
