Update实体时如何避免逐一赋值

来源:互联网 发布:南京php招聘 编辑:程序博客网 时间:2024/06/03 09:57

使用以下方法可以实现避免Update实体时避免逐一赋值的麻烦。

代码:

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);                }            }        }    }


调用方法:

using (DemoDBEntities1 ctx = new DemoDBEntities1())            {                var query = (from q in ctx.Cities                             select q).FirstOrDefault();                City city = new City();                                city.Id = query.Id;                city.StateID = 101;                city.City1 = "test";                                query.CopyPropertiesFrom(city);                int result = ctx.SaveChanges();            }


希望能帮助到更多的人。

原创粉丝点击