/// <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();

SameValueCopier已测试通过

posted on 2008-04-28 23:54  优雅旋律  阅读(3902)  评论(2编辑  收藏  举报