C# 如何在不手动设置每个属性的情况下更新数据库中的实体对象?

C# 如何在不手动设置每个属性的情况下更新数据库中的实体对象?,c#,entity-framework-4,C#,Entity Framework 4,我正在使用实体框架更新数据库表,但手动设置每个属性 using (BmEntities b = new BmEntities()) { var curUser = b.Distributor.Where(k => k.ID == updated.ID).First(); curUser.UserEmail = updated.UserEmail; curUser.UserName = updated

我正在使用实体框架更新数据库表,但手动设置每个属性

 using (BmEntities b = new BmEntities())
        {
            var curUser = b.Distributor.Where(k => k.ID == updated.ID).First();

            curUser.UserEmail = updated.UserEmail;
            curUser.UserName = updated.UserName;
            curUser.UserAdres = updated.UserAdres;
            curUser.UserLast = updated.UserLast;
            curUser.Pass = updated.Pass; //these properties goes too much
            b.SaveChanges();
        }
你能给我举个简单的例子来代替上面的吗?
如果这些属性变为20-30,我该怎么办?我的朋友告诉我一些关于AutoMapper的事情,但我找不到像我这样的简单例子

我从另一个论坛找到了一个扩展方法,它解决了AutoMapper没有的问题

public static class ReflectionExtensions
{
    public static void CopyPropertiesFrom(this object destObject, object sourceObject)
    {
        if (null == destObject)
            throw new ArgumentNullException("destObject");
        if (null == sourceObject)
            throw new ArgumentNullException("sourceObject");

        Type destObjectType = destObject.GetType();
        foreach (PropertyInfo sourcePi in sourceObject.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public))
        {
            PropertyInfo destPi = destObjectType.GetProperty(sourcePi.Name);
            if (null != destPi && null != destPi.SetMethod)
            {
                object sourcePropertyValue = sourcePi.GetValue(sourceObject);

                destPi.SetValue(destObject, sourcePropertyValue);
            }
        }
    }
}
使用此扩展方法,我现在可以从给定对象一次复制所有属性

 public static void Update_User(Distributor updated)
 {
    using (BmEntities b = new BmEntities())
    {
        var curUser = b.Distributor.Where(k => k.ID == updated.ID).First();

        curUser.CopyPropertiesFrom(updated); 

        b.SaveChanges();
    }
}